内存释放问题 本帖最后由 dkbrain 于 2009-12-10 10:13:22 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 memset之后立即delete[]看看会不会报错,要是不会报错,那就是使用的时候越界了 这个有一个结构体边界对齐的问题, 加一行int nSize=sizeof(mPixelAnalyse),看看结构体长度是多少?编译器默认的是8个字节的,所以sizeof(mPixelAnalyse)会是16个字节,而new mPixelAnalyse分配出来的是11个字节,自然在memset的时候也就是越界操作了1可以把结构体凑成16字节,2可以项目中设置结构体对齐为1字节,或在头文件中加入#pragma pack(1)宏3使用用malloc GlobalAlloc之类内存分配方式的操作 涉及到内存分配方式的问题,使用malloc试试,应该就没事了~~~ density是720;我估计应该是数组使用的时候越界了,正在检查程序中,估计应该不是memset()函数有问题。 你看下pPAResult[0]-pPAResult[n]每个结构体之间是否是连续的,如果不是连续的,可能就有问题了 你把delete[]pPAResult; 改成for里面一个个delete看看? 问题解决了pPixelAnalyse pPAResult;pPAResult = new mPixelAnalyse[1000];memset(pPAResult,0,sizeof(mPixelAnalyse) * 1000);delete[]pPAResult; 这样就没有问题了。我的程序之所以出错,是因为在程序中数组访问越界了。 学win32 SDK的学习方法上的问题!!纯属灌水送分题 再请教:MFC制作的界面运行的时候如果不处于选中状态就会变成白色 ??? AfxMessageBox这个函数难道不是包含在windows.h中的吗? 字库问题请教 控制软件抓屏程序尤文 MessageBox怎么老是出错? 请介绍几本网络编程的书? 如何在程序中导入标准图标(32*32)以外的图标资源! csdn的网页总是出问题有问题 急.毕业论文, 纹理图象分割方法研究,谁有相关的VC程序啊, CString 转化到 char* VC基础问题:怎样读取二进制文件?急急急!
看看会不会报错,要是不会报错,那就是使用的时候越界了
编译器默认的是8个字节的,所以sizeof(mPixelAnalyse)会是16个字节,而new mPixelAnalyse分配出来的是11个字节,自然在memset的时候也就是越界操作了
1可以把结构体凑成16字节,
2可以项目中设置结构体对齐为1字节,或在头文件中加入#pragma pack(1)宏
3使用用malloc GlobalAlloc之类内存分配方式的操作
我估计应该是数组使用的时候越界了,正在检查程序中,估计应该不是memset()函数有问题。
pPixelAnalyse pPAResult;
pPAResult = new mPixelAnalyse[1000];
memset(pPAResult,0,sizeof(mPixelAnalyse) * 1000);
delete[]pPAResult;
这样就没有问题了。
我的程序之所以出错,是因为在程序中数组访问越界了。