码迷,mamicode.com
首页 > 其他好文 > 详细

动态内存分配一题

时间:2015-03-05 18:52:24      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

下面代码片断的输出是什么,为什么?

char *ptr;

if ((ptr = (char *)malloc(0)) == NULL) 
{
      puts("Got a null pointer.");
}
else
{
      puts("Got a valid pointer.");
}

 

析:
通过查看 malloc 的手册如下:
The malloc() function allocates size bytes and returns a pointer to the allocated memory.  The memory is not initialized.  If size is  0,  then malloc()  returns either NULL, or a unique pointer value that can later be successfully passed to free().

malloc申请的是一块未初始化的内存空间,如果传如的值为0,可能返回NULL,或者是一个特殊的指针值以用于free函数。

实际测试时,输出的是 Got a valid pointer.
也就是说未返回NULL。但这本身是一个不正确的判断方法。

动态内存分配一题

标签:

原文地址:http://www.cnblogs.com/aqing1987/p/4316311.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!