程序运行时,突然停在Dword_align,然后跳出访问地址冲突的对话框,出现此问题的原因是:内存泄露,导致malloc失败,之后访问malloc分配的地址,自然出现地址冲突的错误。可用如下代码检测malloc是否成功执行:
int*imgData;
try
{
imgData=(int*)malloc(sizeof(int)*P);
if(imgData==0)
throw "imgData Memory allocation failure!";
}
catch (char *str)
{
cout << "Exception raised: " << str <<endl;
}
而内存泄露的原因,多是自己分配了内存,却忘记了释放。尤其是对于结构体里边的指针,千万小心!
比如,声明了如下结构体
struct weakr
{
int* loc;
float* detaSb;
};
然后生成了一个结构体数组weakr weaks[K],那么在不用该数组的时候一定要释放数组中每个元素的指针
for(int i=0;i<K;i++)
{
free(strong[i].loc);
free(strong[i].detaSb);
strong[i].loc=NULL;
strong[i].detaSb=NULL;
}
这个内存泄露不注意很难看出,特此记录下来,以提醒自己!