在调用memcpy函数时出现 异常: 0xC0000005: 读取位置 0x006bd000 时发生访问冲突

问题描述

在调用memcpy函数时出现 异常: 0xC0000005: 读取位置 0x006bd000 时发生访问冲突

BOOL Kirsch(BYTE *pData,int Width,int Height)
{//定义实现Kirsch算法的8个模板;
int i,j,s,t,k,max,sum[8];
static int a[3][3]={{+5,+5,+5},{-3,0,-3},{-3,-3,-3}};
static int a1[3][3]={{-3,+5,+5},{-3,0,+5},{-3,-3,-3}};
static int a2[3][3]={{-3,-3,+5},{-3,0,+5},{-3,-3,+5}};
static int a3[3][3]={{-3,-3,-3},{-3,0,+5},{-3,+5,+5}};
static int a4[3][3]={{-3,-3,-3},{-3,0,-3},{+5,+5,+5}};
static int a5[3][3]={{-3,-3,-3},{+5,0,-3},{+5,+5,-3}};
static int a6[3][3]={{+5,-3,-3},{+5,0,-3},{+5,-3,-3}};
static int a7[3][3]={{+5,+5,-3},{+5,0,-3},{-3,-3,-3}};
if(pData==NULL)
{

    AfxMessageBox(L"图像数据为空,请读取图像数据!");
    return FALSE;
}
BYTE *pData1=NULL;
pData1=(BYTE*)new char[Width*Height];
if(pData1==NULL)//图像缓冲数据区pData1不为空;
{
    AfxMessageBox(L"图像缓冲数据区申请失败,请重新申请图像数据缓冲区!");
    return FALSE ;
}
memcpy(pData1,pData, Width*8*Height);//从源src所指的内存地址的起始位置开始拷贝N个字节到目标dest所指的内存地址的起始位置

。。。。。。。。。
每次到这里就出现访存冲突,请教各位大神指点,比较着急,我先在此谢过各位了。。。

解决方案

pData1=(BYTE*)new char[Width*Height];
memcpy(pData1,pData, Width*8*Height);

pData1申请的内存长度为Width*Height.
但是你memcpy时,拷贝的内容长度是Width*8*Height,长度超过了申请的长度.内存访问越界.
所以出错.

解决方案二:

应该是错误使用了指针

解决方案三:

目标内存,长度为Width*Height ,但是你想拷贝这么多Width*8*Height, 越界啦

时间: 2024-11-02 03:31:51

在调用memcpy函数时出现 异常: 0xC0000005: 读取位置 0x006bd000 时发生访问冲突的相关文章

异常处理- 0x01291dd6 处有未经处理的异常: 0xC0000005: 读取位置 0x00000018 时发生访问冲突

问题描述 0x01291dd6 处有未经处理的异常: 0xC0000005: 读取位置 0x00000018 时发生访问冲突 void results(CvSeq* conto,IplImage pContour) { for (int i=0;itotal;i++) { CvPoint p=(CvPoint*)cvGetSeqElem(conto,i); cout<<"("<x<<","<y<<")&quo

内存泄露-急急急 0xC0000005: 读取位置 0x003741ec 时发生访问冲突

问题描述 急急急 0xC0000005: 读取位置 0x003741ec 时发生访问冲突 void CppToLua::recvData_lua(int iCmdType, VOID * pData, WORD wDataSize) { CCLuaStack* luaStack = CCLuaEngine::defaultEngine()->getLuaStack(); if (!luaStack) return; lua_State* L = luaStack->getLuaState();

c++-求助0xC0000005: 读取位置 0x00000004 时发生访问冲突错误

问题描述 求助0xC0000005: 读取位置 0x00000004 时发生访问冲突错误 void DInputClass::GetInput() { HRESULT hr = m_KeyboardDevice->GetDeviceState(sizeof(m_keyBuffer), (void**)&m_keyBuffer); //在这里提示错误了 //获取键盘输入消息 if(hr) { m_KeyboardDevice->Acquire(); m_KeyboardDevice-&g

求大神指导双向循环链表问题【0xC0000005: 读取位置 0xfeeefeee 时发生访问冲突】

问题描述 求大神指导双向循环链表问题[0xC0000005: 读取位置 0xfeeefeee 时发生访问冲突] 小弟欲新建一双向循环链表,对链表中符合删除条件的数据进行删除操作.整个程序编译无bug,运行中断.主函数运行到新建链表后打印函数中的cout<data<<" ";VS2010显示的错误为"0xC0000005: 读取位置 0xfeeefeee 时发生访问冲突",求大神指教,是否是我新建链表的函数或宏定义中new和delete函数使用错误,

鼠标点击获得数据-代码正常运行一会后出现 0xC0000005: 读取位置 0x00000010 时发生访问冲突

问题描述 代码正常运行一会后出现 0xC0000005: 读取位置 0x00000010 时发生访问冲突 #include #include #include #include #include #include #include using namespace std; typedef struct V { GLdouble x; GLdouble y; GLdouble z; GLdouble X; GLdouble Y; GLdouble Z; GLdouble XN; GLdouble

代码-c++ 0xC0000005: 读取位置 0x02F91000 时发生访问冲突

问题描述 c++ 0xC0000005: 读取位置 0x02F91000 时发生访问冲突 double a[65536] = { 0 }; double b[65536] = { 0 }; double c[65536] = { 0 }; void C测试Dlg::OnBnClickedButton9() { // TODO: 在此添加控件通知处理程序代码 Mat img = imread("F:结果2.bmp",4); int width = img.cols; int height

访问时发生冲突 0xC0000005: 读取位置 0xcdcdcdcd 时发生访问冲突

问题描述 #include"stdafx.h"usingnamespacestd;//长整形加法运算typedefstructDuLNode{intdata;structDuLNode*prior;structDuLNode*next;}DuLNode,*DuLinklist;voidInit_DuLinklist(DuLinklist&L);//初始化链表voidCreatList(DuLinklist&L,intn);//创建链表voidAdd(DuLinklist

CImage出现异常,0xC0000005: 写入位置 0x003e9cd0 时发生访问冲突

问题描述 CImage出现异常,0xC0000005: 写入位置 0x003e9cd0 时发生访问冲突 一个程序要用到CImage类,但是在 debug时候 CImage cImage 出现异常,代码如下: liveImage = cvCreateImage(cvSize(imageInfo.width, imageInfo.height), IPL_DEPTH_8U, 3); EdsUInt32 DataSize = 0; CImage cImage; HRESULT hr; ![图片说明](

矩阵- 0xC0000005: 执行位置 0x00000000 时发生访问冲突。

问题描述 0xC0000005: 执行位置 0x00000000 时发生访问冲突. 我做的是MATLAB与vs混合编程,出现现在的问题不知道是哪的问题,请大神指教.我想看一下调用完MATLAB中的程序后生成的数据是否正确代码如下: #include "stdafx.h" #include"cv.h" #include"highgui.h" #include #include "lvbo.h" #include "Cv