delete释放空间时出错的原因!
2009-05-24 21:22
253 查看
int *a=new int[10];
......
delete []a;
----------------------------------------------------------
当后面delete []a;出现错误的情况大致有:
1 数组的首地址a被你有意无意更改了,如:a++之类的;
2 变量的作用域问题,如:你是在一个函数体中new的,却在另一个函数体中delete,这时的a变量已经失效了,这时delete会出现a为不认识的标识符的错误;
3 先前已经delete过一次了,不可以delete两次;
4、内存访问越界,VC分配内存,除了分配你需要的内存空间外还会分配一些管理单元,就在你分配空间的上界和下界,比如内存边界标志(0xFDFDFDFD),如果是数组在上界会记录数组元素的个数,你要是修改了这些管理信息,delete的时候就会报错。
......
delete []a;
----------------------------------------------------------
当后面delete []a;出现错误的情况大致有:
1 数组的首地址a被你有意无意更改了,如:a++之类的;
2 变量的作用域问题,如:你是在一个函数体中new的,却在另一个函数体中delete,这时的a变量已经失效了,这时delete会出现a为不认识的标识符的错误;
3 先前已经delete过一次了,不可以delete两次;
4、内存访问越界,VC分配内存,除了分配你需要的内存空间外还会分配一些管理单元,就在你分配空间的上界和下界,比如内存边界标志(0xFDFDFDFD),如果是数组在上界会记录数组元素的个数,你要是修改了这些管理信息,delete的时候就会报错。
相关文章推荐
- delete释放空间时出错的原因!
- linux 文件已经删除,但是空间没有释放的原因
- 用new开辟二维数组空间,用delete释放由new产生的二维数组数组空间
- df和du显示的磁盘空间使用情况不一致的原因及处理(文件删除后磁盘空间不释放)
- ORACLE关于DELETE后空间不释放问题
- delete 基类指针 释放为派生类分配的空间
- LINUX下删除文件磁盘空间不释放的原因
- 数据库释放空间时不能使用delete
- oralce中,delete表之后释放表空间的问题
- new/new[]和delete/delete[]是如何分配空间以及释放空间的
- 测试oracle 的delete无法释放表空间
- Oracle delete数据后的释放表空间,加快访问速度
- teradata delete会释放空间吗
- mysql delete无法释放空间用分区代替
- 使用delete释放new[]的空间造成的错误分析
- new、delete、指向连续空间的指针、数组、空间释放、空间申请[C++][内存管理]
- df和du显示的磁盘空间使用情况不一致的原因及处理(文件删除后磁盘空间不释放)
- 模拟new[]和delete[]操作符开辟内存空间及释放内存空间过程
- oracle创建表空间出错的原因和解决办法
- 用delete删除数据使数据库占用硬盘空间增大的原因