16,472
社区成员
发帖
与我相关
我的任务
分享
//定义结构体
typedef struct _PIXEL_ANALYSE
{
BYTE min;
BYTE max;
BYTE average;
double standard_deviation;
}mPixelAnalyse, *pPixelAnalyse;
//以下程序是定义结构体变量并分配内存
pPixelAnalyse pPAResult;
pPAResult = new mPixelAnalyse[density];
memset(pPAResult,0,sizeof(mPixelAnalyse) * density);
……
delete[]pPAResult; //这儿释放内存的时候就会出错,编译的时候没有错误提示,程序运行到这儿时就是中断,提示说堆内存被损坏,但如果把这句注释掉,程序是可以正常实现功能的,不过会有内存泄露。
/*---------如果按下面这样来分配内存就不会出粗,可以正常释放内存---------*/
pPixelAnalyse pPa;
pPa = new mPixelAnalyse;
memset(pPa,0,sizeof(mPixelAnalyse));
……
delete pPa; //此时内存就可以正常被释放
//我想请教的是为什么结构体内存数组new出来的内存不能被正常释放呢?
//难道一定要一个for循环来为每个结构体数组中的每个元素来new内存空间?