无法释放 C 指针
Unable to free C pointer
过去几周我一直在 Linux Mint 学习 C。
但是,我切换到 OSX 并正在测试此代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *arr = calloc(10, sizeof(int));
if(arr == NULL)
printf("arr is null");
for(int i = 0; i < 10; i++, arr++){
printf("%d \n", *arr);
}
free(arr);
return 0;
}
这应该可以打印 10 个零,但它不会释放 arr。
这是输出:
0
0
0
0
0
0
0
0
0
0
a.out(532,0x7fff72606300) malloc: *** error for object 0x7ff060c04b48: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6
我不明白如何访问未分配的内存。如果没有分配arr,输出不应该是"arr is null"吗?
您的程序递增 arr
十次。您传递给 free
的指针与您从 calloc
收到的指针不同。需要传原地址,预增。
过去几周我一直在 Linux Mint 学习 C。 但是,我切换到 OSX 并正在测试此代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *arr = calloc(10, sizeof(int));
if(arr == NULL)
printf("arr is null");
for(int i = 0; i < 10; i++, arr++){
printf("%d \n", *arr);
}
free(arr);
return 0;
}
这应该可以打印 10 个零,但它不会释放 arr。
这是输出:
0
0
0
0
0
0
0
0
0
0
a.out(532,0x7fff72606300) malloc: *** error for object 0x7ff060c04b48: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6
我不明白如何访问未分配的内存。如果没有分配arr,输出不应该是"arr is null"吗?
您的程序递增 arr
十次。您传递给 free
的指针与您从 calloc
收到的指针不同。需要传原地址,预增。