C语言堆内存管理上出现的问题,内存泄露,野指针使用,非法释放指针
(1)开辟的内存没有释放,造成内存泄露
(2)野指针被使用或释放
(3)非法释放指针
(1)开辟的内存没有释放。造成内存泄露,以下的样例就可能造成20个字节的泄露,内存泄露不是一个马上会引发故障的错误,可是
它将消耗系统内存。
void function1()
{
char *pa;
pa = (char*)malloc(sizeof(char)*20);
if(NULL !=pa)
{
strcpy(pa,”hello”);
printf(“pa = %x
”,(unsigned int)pa);
printf(“pa = %ss”,pa);
}
return;
}
(2)野指针被使用或释放
野指针是一个已经被释放的内存指针,他指向的位置已经被使用free或者realloc函数释放了,可是该指针依旧在使用。
void function2()
{
char *pa;
pa = (char*)malloc(sizeof(char)*20);
if(NULL !=pa)
{
strcpy(pa,”hello”);
printf(“pa = %x
”,(unsigned int)pa);
printf(“pa = %ss”,pa);
}