extern void *malloc(unsigned int num_bytes);
当内存申请成功时候,会返回指针,指向分配的内存的起始位置。
如果失败会返回NULL。(失败是因为内存空间不够了)
如果申请的size为0 返回是什么?
是NULL吗??
曾幻想是NULL,但却不是,可以在linux下查看malloc函数。或是msdn
那这个指针到底指向了哪里??
我比较信服的说法是:
对于申请内存为0的做法是属于未定义的(implementation-defined):Please google implementation-defined
也就是说各个实现标准的编译器什么的对于在实现这个未定义的地方的时候可以想怎么实现就怎么实现,因为不是标准的吗。
所以在写代码的时候一定要确保不要出现这种未定义的情况。
本文详细解析了malloc函数的行为,特别是当请求大小为0时的行为。解释了这种情况下返回值的不确定性,并强调了避免此类未定义行为的重要性。
397

被折叠的 条评论
为什么被折叠?



