c++一个析构的时候的释放内存错误
2009-03-22 20:34
232 查看
动态分配内存在可能heap corruption detected的原因之一
出错信息:heap corruption detected:
after normal block(#xxx) at 0x xxxxxxxx
crt detected that the application wrote to menory after end of heap buffer
这是典型的内存溢出错误,常在内存的delete处发生,而且一般在debug版本中可能出现,release版本中可能并不报错.
出现这个错误的原因一般都是操作new申请的内存溢出,因为在c++中,如果用new分配一段内存,操作的时候改变了该部分的大小,在delete时就会出错.比如说如下部分:
char* p=new char[6];
strcpy(p,"aaaaa4");
delete[] p;
这段代码就会出错,因为申请了一个size为6的内存,但是strcpy过去了一个size为7的字符串,因此破坏了这个指针,运行debug版本的时候就会出现先前的错误,但是在release版本中,系统是不会检查这个错误的,除非溢出导致程序的不正常,否则是不会报错的.因此,在程序中进行内存分配的时候一定要注意不能越界.
相关文章推荐
- 大家帮忙看看c++中派生类发生浅拷贝,但是在析构时候怎么没有内存错误!求解!
- C++构造 函数,析构函数,拷贝构造函数,赋值构造函数,一个内存错误例子!
- 一个比较隐蔽的c++释放空间错误
- 问题:为什么本例中c++析构函数不能正确释放内存及析构
- C/C++ 错误笔记-如果要释放内存,必须拿到内存的首地址进行释放
- 大内高手—常见内存错误 - c/c++ - CSDN技术中心
- C和C++动态内存的申请与释放思考(动态多维数组空间分配)
- Memcheck:一个内存错误检测器
- C++动态分配三级指针的内存与释放
- c/c++多级指针的内存申请和释放
- c++ 模板的一个例子,实参演绎的时候,有个地方没看明白
- android释放内存的一个办法
- C++常见内存错误及解决方案
- C++ 释放基类分配的内存(1)
- 今天使用VC的时候碰见了一个这样的错误
- 为一个二维数组动态分配&释放内存
- 在尚无把握对方是否会录用你的时候问一些与工作无关的问题将是一个严重的错误!
- c++动态内存分配与释放
- C++中有的时候不可避免的必须返回一个对象,而不能返回一个reference或pointer
- 我犯了一个低级的C++的逻辑错误