您的位置:首页 > 编程语言 > C语言/C++

c语言 malloc(0)的问题

2013-12-26 14:04 155 查看
#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main()

{

char *p=NULL;

p = (char *)malloc(0);

if (p !=NULL ) {

free(p);

p=NULL;

};

return 0;

}

===============================

以下是gdb的调试结果

36 char *p=NULL;

(gdb)

37 if (p !=NULL ) {

(gdb) p p

$1 = 0x0

(gdb) n

40 p = (char*)malloc(0);

(gdb)

41 if (p == NULL)

(gdb) p p

$2 = 0x804a008 ""

结论:

p = malloc(0) 也会分配一个地址,而不是返回NULL;

free(p)释放后,但p的指向并没有变。用语句 p=NULL 才真正的把p置空。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: