求助.....内存管理 new/delete ....
我在c++程序中多次利用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;
}