首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

该内存不能written,该内存不能read解决方案

2012-03-27 
该内存不能written,该内存不能read[codeC/C++][/code]for(i0iwidei++){for(j0jheightj++){lpSrc

该内存不能written,该内存不能read
[code=C/C++][/code]
for(i=0;i<wide;i++)
{
for(j=0;j<height;j++)
{
lpSrc = p_data + wide * i + j; 
lpDst = p_data1+ wide * i + j;  
pixel = *lpSrc;
pixel0= *lpDst;
if(pixel<=tr1&&pixel0<=tr2)  
{  
*(temp1+wide*i+j)=0;
}  
else  
{  
*(temp1+wide*i+j)=255;
}  

}
}
memcpy(p_data,temp1, wide*height); //这句出现问题,不能写不能读

前面的代码:
LPBYTE temp1;
memset(temp1,255,wide*height);
LPBYTE p_data; 
p_data = GetData();
LPBYTE p_data1;
p_data1 = new BYTE[wide*height];
memcpy(p_data1,p_data,wide*height); 

p_data 和 temp1的地址都存在

帮忙看看问题可能出在哪?

[解决办法]
数组的长度不够,访问出界了!

[解决办法]
LPBYTE temp1;
memset(temp1,255,wide*height);
这两行类似于:
BYTE *temp1
memset(temp1, 255, wide*height);
还没分配内存就之间使用了.怎么能这样用呢?
LPBYTE temp1 = new BYTE[wide*height];
[解决办法]
指针没有分配空间~
[解决办法]
LPBYTE temp1; //这个的内存在哪啊,老大
memset(temp1,255,wide*height);

[解决办法]
内存越界
为temp1申请一块内存空间
[解决办法]

C/C++ code
这句 p_data = GetData();返回的 p_data 是栈指针还是 new 出来的?如果是 GetData 函数内的局部变量则不正确!另外p_data也要指向一块内存 

热点排行