由NULL指针分配的内存

时间:2015-09-14 13:56:30

标签: c pointers

NULL指针是否占用任何内存? 如果它占用了内存,那么它消耗了多少内存,如果需要内存,那么 NULL 指针的重要用途是什么?

3 个答案:

答案 0 :(得分:8)

指针NULL或不需要)需要一些空间来存储和表示(大多数现代桌面系统上有4到8个字节,但可能是一些奇怪的大小取决于架构)。

指针值NULL表示明确定义的"无处&#34 ;;它是一个无效指针值,保证比较不等于内存中任何对象或函数的地址。宏NULL设置为空指针常量,它是一个零值整数表达式(裸0(void *) 0或其他一些表达式,其值为0)。

编译完代码后,空指针常量将替换为该特定平台(可能为0x000000000xFFFFFFFF的相应空指针 ,或0xDEADBEEF,或其他一些值)。

答案 1 :(得分:5)

任何指针值(包括NULL)都需要一小段系统相关的空间来表达或存储。

这是指向对象(如果有的话)可能需要的任何空间的完全独立的考虑因素。保证NULL指针不指向任何对象,但不保证非NULL指针指向对象。另一方面,可能有多个指向同一对象的指针。

在有意使用NULL指针的情况下,它通常用于显式表达无效指针,因为您无法从任何其他指针值判断该指针是否有效。这可能很有用,例如,标记未知长度指针数组末尾的标记值,或作为指示失败的函数返回值。后者的规范示例可能是malloc(),如果无法分配请求的空间,则会返回NULL

答案 2 :(得分:3)

NULL指针不分配任何内容。如果您有这样的定义:

int *x = NULL;

这意味着指向x的变量int并未指向任何内容。然后,您可以检查if (x == NULL)以查看它是否指向有效内存。