关于DAMAGE: after Normal block的问题
来源:互联网 发布:ps制作淘宝店铺首页 编辑:程序博客网 时间:2024/06/05 21:45
经过调查发现错误是因为在给数组赋值的时候越界了1个位置。
也就是double * a= new double [5],结果赋值的时候给a[5]=5。使用c++的同学都知道,一个5维的动态数组,调用时应该是0~4,但是这里给a[5]赋值并没有出错,反而是delete时才会出错。
这其实是因为在动态分配内存的时候往往分配的是一个连续的地址,这一点从可以使用*[a+3]来取值就能够知道。
因此,在动态分配的时候,会在数组界限外加一个用来标识数组范围的标志,例如a数组,就会在a[-1]和a[5]有两个标志,如果我们在这两个位置赋值,赋值和调用时并不会出错,而是在delete [] a时出错,错误的名称就是“DAMAGE: before Normal block”和“DAMAGE: after Normal block”。一般是后者居多。
因此,当你遇见这个错误的时候,记得去检查一下自己数组的赋值吧。
- 关于DAMAGE: after Normal block的问题
- 关于DAMAGE: after Normal block的问题
- 关于DAMAGE: after Normal block的问题
- [转载]关于DAMAGE: after Normal block的问题
- [MFC]关于DAMAGE: after Normal block的问题
- DAMAGE:after Normal block问题
- DAMAGE:after Normal block问题
- DAMAGE: after Normal block
- Damage :after normal block:
- DAMAGE:After normal block(#****)
- DAMAGE:after Normal block
- DAMAGE:after Normal block
- DAMAGE:After normal block(#****)
- DAMAGE:After normal block(#****)
- DAMAGE:After normal block(#****)
- DAMAGE:After normal block(#****)
- DAMAGE:After normal block(#****)
- DAMAGE:After normal block(#****)
- 移植uboot-1.1.6到勤研2440(和精智2440接近,仿照100ask24x0_config配置,重现韦东山的uboot-1.1.6_patch过程)
- 重绘CHeaderCtrl分割线
- java运行期间打印方法调用栈
- 28-线包字
- Java调用Oracle的分页存储过程
- 关于DAMAGE: after Normal block的问题
- 如何学习一门编程语言
- 上传Excel
- USB的FATFS文件系统调试
- JAVA 中的递归
- SQL小结
- 学习编程
- 操作系统笔记《7》-------生产者、消费者问题 。读者、写者问题 程序实现
- 给我们的7句话