<分区>
我尝试函数式地malloc一个数组,这个函数还可以检查内存是否足够。
第一个代码块不能工作。
当它执行“*pi = 5
”时,编译器会显示此错误消息“Thread 1: EXC_BAD_ACCESS(code=1, address=0x0)”
。
#include <stdio.h>
#include <stdlib.h>
void malloc_and_check(int *var)
{
if(!(var = (int*)malloc(sizeof(int))))
{
fprintf(stderr, "Insufficient Memory\n");
exit(EXIT_FAILURE);
}
}
int main(int argc, const char * argv[])
{
int *pi;
malloc_and_check(pi);
*pi = 5;
printf("%d", *pi);
free(pi);
}
但是下面的代码可以正常运行。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char * argv[])
{
int *pi;
if(!(pi = (int*)malloc(sizeof(int))))
{
fprintf(stderr, "Insufficient Memory\n");
exit(EXIT_FAILURE);
}
*pi = 5;
printf("%d", *pi);
free(pi);
}
它们有什么区别?谢谢!