堆被破坏
来源:互联网 发布:新手如何经营淘宝网店 编辑:程序博客网 时间:2024/04/27 13:27
void CDlgConfig::CalcMap(void){m_pXofs = new int[m_dst->width];m_pYofs = new int[m_dst->height];double ifx = 1./inv_scale_x, ify = 1./inv_scale_y;int x ,y;// dst中位置对应src中的位置for( x = 0; x < m_dst->width; x++ ){int sx = saturate_cast<int>(x*ifx);m_pXofs[x] = std::min(sx, m_src->width-1);}for( y = 0; y < m_dst->height; y++ ){int sy = saturate_cast<int>(y*ify);m_pXofs[y] = std::min(sy, m_src->height-1);}// src 中的位置,对应dst的位置 // saturate_cast<int> std::min(x*inv_scale_x,m_dst->widht-1)}
原因:
m_pXofs[y] = std::min(sy, m_src->height-1);错误。y大于了 new int[] 分配的值。从而破坏了堆
问题的发现受http://zhidao.baidu.com/link?url=OV_SX1Iq7gA1LgQtSLU3w_Tl0a_4RpXtmTuyZfnbAv4ZPI87Lp8-l5o3SzBtSGNzi8aZx7lm5BDwtxQp4w1j1a 启发
从目前的代码看,应该就是以下问题了从你的方法void Read1(int * data, long n);分析讨论由于这个方法的第一个参数是data并非为const,也就是执行完这个函数后,main中data与Read1中的地址相同,到此时还未问题由于没有给出Read2、Read3、Read5,无法判断,LZ可以自己看看这些函数因为main中int * data=new int[n];即只分配了n个int大小的内存如果在Read2、Read3、Read5执行后,数组变大了,就会出现这种问题
0 0
- 堆被破坏
- 堆被破坏的调试方法
- 尽早发现堆破坏
- windbg调试堆破坏
- 用于windbg检查堆是否被破坏的python脚本
- C malloc free 调试 --- 解决堆被破坏错误
- 用AppVerifier查找堆破坏
- 堆破坏和栈破坏,还有数组反向越界
- 一次堆破坏的调试经历
- VC中一个堆破坏的例子
- strlen和strcpy_s引发的堆破坏
- PageHeap的堆破坏检测原理
- 堆破坏(Heap Corruption)和Gflags
- 破坏
- 内存泄露,缓冲区溢出,堆破坏 的问题
- 堆内存破坏检测实战--附完整调试过程
- DUMP文件分析6:简单的堆破坏示例
- DUMP文件分析6:简单的堆破坏示例
- python学习遇到问题及解决方案
- EXCEL中用数据透视表统计数据时,由于数据格式问题导致的统计不准确。
- js实现几个算法题
- FZU 2169 shadow (用了一次邻接表存边,树形DP)
- 面向对象编程之C#
- 堆被破坏
- zeroMQ相关
- linux下web项目的压力测试软件
- hdu 1016素数环
- 我的嵌入式学习之路
- Unity3D开发:Unity3D中的脚本概述
- Facebook的公平份额调度器FairScheduler
- ArcGlobe三维开发之二十——输电线路二三维交互选线
- 【读书笔记】iOS应用逆向工程-分析与实践(第三章)1