首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

free使用中的常见异常

2012-09-14 
free使用中的常见错误#includestdio.h#include stdlib.h#include string.hvoid main(){int *a(char

free使用中的常见错误
#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; } 

热点排行