代码如下:
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
int i = 0, j = 0;
CJob** ppJobs = NULL;
try
{
int nCount = m_xlist.CountCheckedItems(0);
if (nCount)
{
ppJobs = new CJob*[nCount];
for (; i < m_xlist.GetItemCount(); i++) // record all cancel jobs
{
if (m_xlist.GetCheckbox(i, 0) == TRUE)
{
CJob* pJob = reinterpret_cast<CJob*>(m_xlist.GetItemData(i));
ppJobs[j] = pJob;
j++;
}
}
for (; j > 0; j--) // cancel jobs from array
{
ppJobs[j-1]->Cancel();
}
delete [ ] ppJobs;
pJobs = NULL;
}
}
catch(){}
_ASSERTE( _CrtCheckMemory( ) );
做的操作非常的简单,就是把一些CJob类的指针先放到
ppJobs 数组里,然后对CJob做一个cancel的操作,最后释放数组。
但是现在问题来了,本来我在ppJobs里面只new 了2个元素8*2个字节,但是,当我delete ppJobs时却删除了8*8 个字节。如图:
红色改变的部分是我调用delete [ ] ppJobs;时改变的内存, 实际上它只需要修改8*2个字节就可以了,很明显, 删除的内存越界了。
接着_ASSERTE( _CrtCheckMemory( ) );中断。
暂时还没有找到好地解决办法。。。
分享到:
相关推荐
用new和delete运算符动态分配内存空间的方法编写程序。从键盘输入33整型数组的数据,并计算出所有元素之和,打印出最大值和最小值。输入输出要用流运算符实现。
对应的new和delete要采用相同的形式 下面的语句有什么错? string *stringarray = new string[100]; ... delete stringarray; 一切好象都井然有序——一个new对应着一个delete——然而却隐藏着很大的错误:程序的...
动态内存分配操作符new和delete,以及new[]和delete[]
new delete二维数组,new delete二维数组,new delete二维数组,new delete二维数组,new delete二维数组,new delete二维数组
编写代码,举例说明new/delete与new[]/delete[]在创建对象时申请内存,以及释放空间时的区别
C++动态内存分配(new/new[]和delete/delete[])详解 为了解决这个普通的编程问题,在运行时能创建和销毁对象是基本的要求。当然,C已提供了动态内存分配函数malloc( )和free( ),以及malloc( )的变种(realloc:改变...
汇编级分析了VC8.0下new / delete
解决内存泄露的源代码,重载了NEW DELETE 函数,通过获取指针的钩子,截获内存泄露的元凶
使用new和delete创建二维数组,作业习题中的一道,希望能有所帮助
new delete.cpp
C++的动态内存管理是通过new和delete两个操作来完成的,即用new来申请空间,用delete来释放空间。在使用new和delete时,注意以下原则。 1.new与delete需一一对应 用new操作申请空间,如果申请成功,必须在以后的某个...
重写Global new/delete示例
个人笔记 个人笔记 个人笔记 个人笔记 个人笔记
简述 C++ 中的 new 和 delete 的基本原理,并讲述了内存检测子系统的实现原理、实现中的技巧,并对内存泄漏检测的高级话题进行了讨论。解决了本人在内存泄露很多多问题(我也是down的别人的),觉得非常好,所以给...
C语言实现的内存池!j利用默认的内存管理函数new/delete或malloc/free在堆上分配和释放内存会有一些额外的开销。
有关于c++方面new和delete的用法及关注
关于c++的一些深入介绍,如delete new 等函数的一些应用 ,还有许多疑难的均有解释
关于new和delete的详细用法。详细用法哟!new是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,
定制new / delete的性能分析
3 ,因此C++ 语言需要一个能完成动态内存分配和初始化工作的运算符new ,以一个能完成清理与释放内存工作的运算符delete.注意ne w/delete 不是库函数。 4 ,C++ 程序经常要调用C函数,而C 程序只能用malloc/free ...