二维Otsu阈值分割法,发生内存不能“read”,求解答!
时间:2011-12-07
来源:互联网
应用程序错误
“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);
在网上也查了下,有的说是指针访问错误,内存没有释放干净,或访问了野指针,类释放了,然后又去调用这个类就会产生这样的错误等等等。
反复看了几遍还是没找出来是哪里错误。
把断点放在循环的后面,单步调试只能运行到这个循环里面。
求帮助,感谢感谢感谢啊!
“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);
在网上也查了下,有的说是指针访问错误,内存没有释放干净,或访问了野指针,类释放了,然后又去调用这个类就会产生这样的错误等等等。
反复看了几遍还是没找出来是哪里错误。
把断点放在循环的后面,单步调试只能运行到这个循环里面。
求帮助,感谢感谢感谢啊!
作者: greatliudy123 发布时间: 2011-12-07
LPBYTE p_data;
LPBYTE p_data1;
你这两个分配内存了吗?
LPBYTE p_data1;
你这两个分配内存了吗?
作者: flydreamGG 发布时间: 2011-12-07
引用 1 楼 flydreamgg 的回复:
LPBYTE p_data;
LPBYTE p_data1;
你这两个分配内存了吗?
LPBYTE p_data;
LPBYTE p_data1;
你这两个分配内存了吗?
分配了,
p_data = GetData();
p_data1 = GetData();
这两句,忘贴出来了!
作者: greatliudy123 发布时间: 2011-12-07
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28