内存出错-内存泄露-数组越界-悬空指针-错误分配

上传人:笛音 文档编号:25580675 上传时间:2017-12-15 格式:DOCX 页数:8 大小:22.11KB
返回 下载 相关 举报
内存出错-内存泄露-数组越界-悬空指针-错误分配_第1页
第1页 / 共8页
内存出错-内存泄露-数组越界-悬空指针-错误分配_第2页
第2页 / 共8页
内存出错-内存泄露-数组越界-悬空指针-错误分配_第3页
第3页 / 共8页
内存出错-内存泄露-数组越界-悬空指针-错误分配_第4页
第4页 / 共8页
内存出错-内存泄露-数组越界-悬空指针-错误分配_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《内存出错-内存泄露-数组越界-悬空指针-错误分配》由会员分享,可在线阅读,更多相关《内存出错-内存泄露-数组越界-悬空指针-错误分配(8页珍藏版)》请在金锄头文库上搜索。

1、 内存出错,内存泄露,数组越界,悬空指针,错误分配2010-06-01 10:43 879 人阅读 评论(3) 收藏 举报内存出错(包括 4 个). 数组越界;. 内存泄露;. 悬空指针(野指针);. 错误分配。1. 数组越界:程序反应:跳出“内存不足。” 提示框。调试的时候无法定位到准确的出错点,也就是程序崩溃的地方不确定。但是大致出错会在数组所在的函数里面或调用了数组的函数里,如果总弹出以上对话框,就检查出错代码附近是否有用到数组,特别是边界处要仔细检查。应用 vector 的时候也要注意越界问题。2. 内存泄露new 后一定要 delete,malloc 之后一定要 free。程序反应:

2、一是可能像上面一样弹出对话框提示。/一般不会出现。二是可能在 Debug 版下编译运行均不会崩溃,但是 Release 版下会导致程序崩溃,这一般是内存泄露的问题。2.1:1. delete 的时候为什么会报错?2.在哪里 delete比较合适?BOOL Test(char*& ptStr)CString temp;temp = m_pListCtrl-GetItemText(iRow, iCol);ilen = temp.GetLength()+1; /必须加 1ptStr = new charilen;strcpy(ptStr,temp); / delete ptStr;return TR

3、UE;void CallTest()char* cstemp = NULL;for( i=0;i文件中有:typedef void (*new_handler)();new_handler set_new_handler(new_handler p) throw();用户自定义:void nomorememory()std:cerr Func(); / p 是“野指针”函数 Test 在执行语句 p-Func()时,对象 a 已经消失,而 p 是指向 a的,所以 p 就成了“野指针”。但奇怪的是有些编译器运行这个程序时居然没有出错,这可能与编译器有关。4. 错误分配错误分配的管理不是很困难,

4、此类错误都会被快速地检测到。4.1 两个错误的内存释放/* Allocate once, free twice. */void f3()char *p;p = malloc(10);.free(p);.free(p);/* Allocate zero times, free once. */void f4()char *p;/* Note that p remains uninitialized here. */free(p);4.2 未初始化的指针void f2(int datum)int *p2;/* Uh-oh! No one has initialized p2. */*p2 =datum;.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号