我对某事感到困惑。内存分配和NULL指针
第一:
int *ptr;
ptr = malloc(10 * sizeof(int));
这种类型在运行时获得动态(堆)存储,而不是编译时间像阵列。
malloc()
如果没有内存,可能会返回NULL
。
而且NULL
是在标准C库中的#define
#define NULL ((void *)0)
所以,如果malloc
回NULL
和处执行运行时,编译器将如何替代NULL
与void *0
,我知道,任何文本替换发生在预编译阶段
严格来说,'malloc'不会返回NULL。它返回一个类型为“void *'的空指针。宏'NULL'被定义为扩展为一个表达式,该表达式的结果是一个类型为“void *”的空指针,或者是一个整数常量(任何整数类型),其值为0。因此,值'malloc'在失败时返回等于'NULL',但不一定与'NULL'类型相同,并且肯定不是'NULL'本身,因为'NULL'是一个宏,它没有任何意义一个函数来“返回一个宏”。函数返回值。 –