求助.....内存管理 new/delete ....
但是程序在执行到delete时出现debug错误: DAMAGE: after Normal Block(#x),不知原因何在?
如果不用delete 释放的话,程序执行几次之后将无法执行,估计是内存泄漏。
程序基本代码如下:
static void f1(int n)
{
unsigned short *p1, *p2;
p1 = new unsigned short[n];
memset(p1, 0 ,n*sizeof(unsigned short));
p2 = new unsigned short[n];
memset(p2, 0 ,n*sizeof(unsigned short));
...
...
f2(p1,p2,n);
...
..
delete []p2;
delete []p1;
}
static void f2(unsigned short *a, unsigned short *b, int n)
{
unsigned short *x, *y, *z;
x = new unsigned short[n/2];
memset(z, 0 ,n/2*sizeof(unsigned short));
y = new unsigned short[n/2];
memset(y, 0 ,n*sizeof(unsigned short));
z = new unsigned short[n/2];
memset(z, 0 ,n/2*sizeof(unsigned short));
...
...
delete []z;
delete []y;
delete []x;
}
相关推荐
C++中new/delete与new[]/delete[]的使用区别
编写代码,举例说明new/delete与new[]/delete[]在创建对象时申请内存,以及释放空间时的区别
C++动态内存分配(new/new[]和delete/delete[])详解
主要介绍了C++动态内存分配(new/new[]和delete/delete[])详解的相关资料,需要的朋友可以参考下
C++内存管理详解,new,delete的合理使用
对应的new和delete要采用相同的形式 下面的语句有什么错? string *stringarray = new string[100]; ... delete stringarray; 一切好象都井然有序——一个new对应着一个delete——然而却隐藏着很大的错误:程序的运行情况将是不可猜测的。至少,stringarray指向的100个string对象中的99个不会被正确地摧毁,因为他们的析构函数永远不会被调用。
深入理解C++中的new/delete和malloc/free动态内存管理及区别介绍
malloc/free和new/delete的区别 malloc/free是C/C++标准库的函数;new/delete是C++操作符。 malloc/free只是动态分配内存空间/释放空间;new/delete除了分配空间还会调用构造函数和析构函数进行初始化与清理资源。 malloc/free需要手动计算类型大小且返回值类型为void*;new/delete可自动计算类型的大小,返回对应类型的指针。 malloc/free管理内存失败会返回0;new/delete等的方式管理内存失败会抛出异常。 在C++ Primer书中有提到说: new/delete的表达式与标准库函数同
定制new / delete的性能分析
定制new / delete的性能分析



