#include<stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
int *a=(char *)malloc(sizeof(20));strcpy(stu.name,"li ming");free(a);}
在gcc中运行未出错,但是出现了内存越界严重漏洞。在使用gdb调试后我发现,a+4前面的内容释放了,a+4 开始的内容是"ing",因此gcc只释放了动态分配的空间,所以,运行程序未报错。
在vc中运行出错,原因是vc去释放了最少8个地址的内存,但是后面的4个不是动态分配的,而是编译器分配的,所有无法释放。
为空指针赋值错;
vc:Debug Assertion Failed
gcc:Aborted (core dumped);
#include<stdio.h>
#include <stdlib.h>
void main()
{
int *p;
free(p);
}
gcc:seg-fault,vcc崩溃。
#include<stdio.h>
int main(void)
{
char *p = "Reage";
*ptr = 'R';
printf("\n [%s] \n", ptr);
return 0;
}