二维指针你是怎么释放的,这样吗?
for(int k=0;k {
if (two[k] != NULL)
free(two[k]);
two[k] = 0;
}
free(two);
two= 0;
不错,代码完全正确,但是屡屡报错,释放了不属于你的空间。
Oh,OMG,怎么回事,看看我们怎么申请内存的啊
你的初始化的表现也很好
if (two== 0)
{
two = (double **)calloc(sizeof(double *), m_nImageHeight);
memset(two, 0, m_nImageHeight * sizeof(double *));
}
for(int k=0;k {
if (two[k] == 0)
{
two[k] = (double *)calloc(sizeof(double),m_nImageWidth);//申请二维矩阵
}
}
恩,不错啊,申请了两级指针的内存。
但是你对了吗?否!!
因为如果你没有初始化的时候two =0但是two[0]还是有值的,结果你释放了不属于你的空间。
还有一点忠告,尽量少用复制,粘贴。如果出了一点错误。结果~~~。自作孽不可活啊
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20871617/viewspace-627769/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/20871617/viewspace-627769/