<span style="font-size:14px;">#include <stdio.h>
#include <stdlib.h>
int main(int argc, _TCHAR* argv[])
{
char *p =(char *)malloc(10);
p++;
free(p);
return 0;
}</span>
<span style="font-size:14px;">#include <stdio.h>
#include <stdlib.h>
int main(int argc, _TCHAR* argv[])
{
char *p =(char *)malloc(10);
p++;
free(p);
return 0;
}</span>
指针申请后被修改再free会失败
这个free错误则不好查找,因为实际的程序往往没下面的例子这么简单,可能从申请到最后释放跨域多个模块、大量的处理代码逻辑,指针初始值被修改掉,也就是说分配的这段内存的“门牌号”被改掉了,那么free就会失败。