二维Otsu阈值分割法,发生内存不能“read”,求解答!该怎么处理
二维Otsu阈值分割法,发生内存不能“read”,求解答!
应用程序错误
“0x0040411a”指令引用的“0x001ae000”内存。该内存不能为“read”。
[code=C/C++][/code]
[align=left]
for(i=0;i<wide;i++)
{
for(j=0;j<height;j++)
{
pixel = *(p_data + wide*i + j); //
pixel0= *(p_data1+ wide*i + j);
lpDst = temp1 + wide*i + j;
if(pixel<=tr1&&pixel0<=tr2) //tr1和tr2为两个阈值
{
*lpDst=0;
}
else
{
*lpDst=255;
}
}
}
//复制图像
memcpy(p_data, temp1, wide*height);
//释放内存
delete temp1;
}
定义及内存分配:
long pixel=0;
long pixel0=0;
LPBYTE p_data;
LPBYTE p_data1;
LPBYTE lpDst;
LPBYTE temp1;
temp1=new BYTE[wide*height];
memset(temp1,255,wide*height);
在网上也查了下,有的说是指针访问错误,内存没有释放干净,或访问了野指针,类释放了,然后又去调用这个类就会产生这样的错误等等等。
反复看了几遍还是没找出来是哪里错误。
把断点放在循环的后面,单步调试只能运行到这个循环里面。
求帮助,感谢感谢感谢啊!
------解决方案--------------------
http://blog.****.net/fengbingchun/article/details/5935205
或者直接调用opencv的函数
------解决方案--------------------
点取消,看看停在哪里,是哪个参数/变量的值不对了。
------解决方案--------------------
应用程序错误
“0x0040411a”指令引用的“0x001ae000”内存。该内存不能为“read”。
[code=C/C++][/code]
[align=left]
for(i=0;i<wide;i++)
{
for(j=0;j<height;j++)
{
pixel = *(p_data + wide*i + j); //
pixel0= *(p_data1+ wide*i + j);
lpDst = temp1 + wide*i + j;
if(pixel<=tr1&&pixel0<=tr2) //tr1和tr2为两个阈值
{
*lpDst=0;
}
else
{
*lpDst=255;
}
}
}
//复制图像
memcpy(p_data, temp1, wide*height);
//释放内存
delete temp1;
}
定义及内存分配:
long pixel=0;
long pixel0=0;
LPBYTE p_data;
LPBYTE p_data1;
LPBYTE lpDst;
LPBYTE temp1;
temp1=new BYTE[wide*height];
memset(temp1,255,wide*height);
在网上也查了下,有的说是指针访问错误,内存没有释放干净,或访问了野指针,类释放了,然后又去调用这个类就会产生这样的错误等等等。
反复看了几遍还是没找出来是哪里错误。
把断点放在循环的后面,单步调试只能运行到这个循环里面。
求帮助,感谢感谢感谢啊!
------解决方案--------------------
http://blog.****.net/fengbingchun/article/details/5935205
或者直接调用opencv的函数
------解决方案--------------------
点取消,看看停在哪里,是哪个参数/变量的值不对了。
------解决方案--------------------