delete [] ptr 引发了singnal 6 abort的core错误,跟踪过程发现写入ptr大量数据,引发内存越界,破坏了new数组的尾部数据保护,导致delete的时候core。

问题分析过程写了一段测试代码,发现另外一些编辑器或者说操作系统的性质,new申请的数组总是分配2的n次方的空间,比如char* ptr = new char[10]实际分配了16个字节的空间 ,char* ptr2 = new char[15]同样分配了16个空间的字节,而char* ptr3 = new char[16]则分配了32个字节的空间,由此推测new出来的数组尾部有一个字节的特殊字符用于保护。

虽然找到core的原因,但还是对系统new和delete的内存分配有所不理解:char* ptr = new char[10]的时候写入17个字符至ptr,delete [] ptr并不会core;写入29个字符至ptr,delete [] ptr引发signal6 abort的core;对内存申请的头部和尾部数据保护还是没搞清楚。

最新文章

  1. PHP如何使用GeoIP数据库
  2. android基础(六)android的消息处理机制
  3. Spring声明式事务管理基于@Transactional注解
  4. 09_IO流
  5. 使用 JavaScript 实现栈
  6. 百度地图API 学习网站
  7. Clearing Search Values
  8. Linux学习之路:变量值的删除、替代和替换
  9. JS获取TextArea和Input的同步值
  10. T-SQL表联接查询
  11. 如何设置Java虚拟机内存以适应大程序的装载
  12. HDU 1535 Invitation Cards(SPFA,及其优化)
  13. Linq to SQL 简单的增删改操作
  14. ASP.NET如何通过后台数据库提供的链接播放视频(不使用外置插件)
  15. Java8虚拟机内存模型
  16. qt 程序中执行额外程序和脚本
  17. Css的前世今生
  18. JavaScript中HTML DOM focus()与onblur() setSelectionRange()用法
  19. 在Windows Azure上创建ASP.NET MVC网站
  20. composer - No business network has been specified for this connection 解决方案

热门文章

  1. hdu 4617 Weapon(叉积)
  2. [反汇编练习] 160个CrackMe之014
  3. HDU 1232 畅通工程 (并查集,常规)
  4. operator.itemgetter的用法【转】
  5. 在linux下实现用ffmpeg把YUV420帧保存成图片
  6. 流媒体相关知识介绍 及其 RTP 应用
  7. Spring学习之Ioc
  8. tcprstat的使用方式
  9. Android ListView从网络获取图片及文字显示
  10. SDUT 3568 Rock Paper Scissors 状压统计