由NULL指针分配的内存

jam*_*ndu 1 c pointers

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

Joh*_*ode 8

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

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

在编译代码之后,空指针常量将替换为该特定平台的适当空指针(可以是0x00000000,或0xFFFFFFFF,或0xDEADBEEF,或其他一些值).


Joh*_*ger 5

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

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

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