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置空。
#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置空。
相关文章推荐
- 关于c语言中的malloc问题
- 【C语言】malloc()和free()函数的讲解以及相关内存泄漏问题
- 【C语言】malloc()和free()函数的讲解以及相关内存泄漏问题
- 【C语言】malloc()和free()函数的讲解以及相关内存泄漏问题
- C语言malloc()的一个问题——堆越界的一个错误。
- C语言中关于malloc(0)问题
- [2016/11/13]c语言的细节问题:malloc和char*
- 【C语言】malloc()和free()函数的讲解以及相关内存泄漏问题
- C语言 malloc(0)的问题
- C语言中关于malloc(0)问题
- C语言malloc(0)问题
- C语言中对于for语句,变量赋初值问题探讨
- 八皇后问题 C语言,递归,非递归,循环!
- C语言 百人拉百灯问题
- 从一个笔试题看C语言中float向double的提升问题
- C语言链表的基础,malloc()分配内存
- C语言比较重要的库函数memcpy memmove和内存重叠的问题
- 回溯法-旅行售货员问题(C语言)
- C语言之函数返回值的问题
- 黑马程序员-C语言学习笔记-----内存分配函数(malloc、calloc、realloc)