linux malloc指针释放问题

 

C语言malloc出来的指针使用不当,很容易造成未知的段错误问题。

该文章只分析在指针释放过程中造成段错误的场景,大家可以根据段错误时的错误提示,推测错误原因。

 

1、double free导致的段错误

错误提示:

*** glibc detected *** ./a.out: double free or corruption (fasttop): 0x0000000000d8b010 ***

C代码示例:

#include<stdio.h>
#include<stdlib.h>

int main()
{
char *p = malloc(100);
free(p);
free(p);

return 0;

}

 

2、释放野指针(该指针指向的地址,可能不是malloc分配时返回的地址)

错误提示:

*** glibc detected *** ./a.out: free(): invalid pointer: 0x0000000000986011 ***

C代码示例:

#include<stdio.h>
#include<stdlib.h>

int main()
{
char *p = malloc(100);
free(p + 1);

return 0;

}

 

posted on 2018-10-10 17:04  xiangchen  阅读(1037)  评论(0)    收藏  举报