使用LZO库解压时报错,读取位置时发生访问冲突

代码如下:
#define IN_LEN (6400*1024L)
FILE* fp2;
FILE* fp3;
errno_t err; //错误变量的定义

lzo_bytep in;
lzo_bytep out1;
lzo_uint out_len;
lzo_uint file_len;
lzo_uint new_len;
err = fopen_s(&fp2, "文件1.txt", "r+");//打开欲解压的文件
if (err)
{
    printf("打开原始文件失败! \n");
    return 1;
}
//获取文件长度
long cur = ftell(fp2);
fseek(fp2, 0L, SEEK_END);
file_len = ftell(fp2);
fseek(fp2, cur, SEEK_SET);

//将文件读取到内存中
out1 = (lzo_bytep)malloc(file_len);
int err1 = fread(out1, file_len, 1, fp2);
if (err1 == file_len)
{
printf("读取%lu个字符", file_len);
}
else if (err1 == 0)
printf("读到文件末尾或错误");

//开辟解压后的数据存放空间
in = (lzo_bytep)malloc(IN_LEN);
//解压数据
int r = lzo1x_decompress(out1, out_len, in, &new_len, NULL);
if (r == LZO_E_OK)
{
    printf("解压成功:decompressed %lu bytes back into %lu bytes\n",
        (unsigned long)out_len, (unsigned long)new_len);
    char* uDestName = "解压后文件.txt";
    //创建一个文件用来写入解压缩后的数据
    err = fopen_s(&fp3, uDestName, "w+b");
    if (err)
    {
        printf("解压缩文件创建失败! \n");
        getchar();
        return 1;
    }

    printf("写入数据... \n");
    fwrite(in, new_len, 1, fp3);
    fclose(fp3);
}
else
{
    // this should NEVER happen 
    printf("解压失败:internal error - decompression failed: %d\n", r);
    getchar();
    return 1;
}
lzo_free(in);
printf("Simple compression test passed.\n");
getchar();
return 0;

}
整个过程就是读取文件到内存,解压后再写入文件,但是怎么调试都会报:读取位置时发生访问冲突,请大神们帮忙看看到底哪里有问题。

c++

2个回答

发现问题在于解压的数据本身,如果数据本身有问题就会出现上述情况。按照官方说明,数据不可解压时应该返回负值或其他值而不是直接在编译器中报错,至于为什么会这样,我也不知道。

文件被其它地方打开了吧

zzllvlv
zzllvlv 文件打开没有问题,就是在执行lzo1x_decompress()的时候发生访问冲突
9 个月之前 回复
zzllvlv
zzllvlv 我已经把文件中的内容拷贝到内存中了啊,就是out1字符数组中了,和文件应该没有关系啊
9 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
读取位置时发生访问冲突???
一个很简单的控制台程序(要支持MFC),但关闭控制台后弹出一个错误框rn[img=http://img.my.csdn.net/uploads/201301/18/1358487328_2672.jpg][/img]rn[code=c]rnCString MultiToWide(char * ch)//将多字节转换为宽字符rnrn int clen=strlen(ch);//计算长度rn int wlen=MultiByteToWideChar(CP_ACP,0,ch,clen,NULL,0);//CP_ACP使用微软ansi.获得多字节字符大小rn TCHAR *chartemp = new TCHAR[wlen+1];rn MultiByteToWideChar(CP_ACP,0,ch,clen,(LPWSTR)chartemp,wlen);//多字节转换为宽字符rn chartemp[wlen]='\0';//末尾加上结束标记rn CString stout;rn stout.Append(chartemp);//转换为CStringrn delete []chartemp;rn return CString(stout);rnrnrnint _tmain(int argc, TCHAR* argv[], TCHAR* envp[])rnrn char client[1024]='\0';rn sprintf_s(client,"客户端 %s:%d 信息","127.0.0.1", "5566");rn CString sClient=MultiToWide(client);rn std::cout<
读取位置时发生访问冲突
我在一段程序里 rnint parent[45] 先声明了parent ; rnn=Find(parent,edges[i].begin);到这里就出现了 读取位置时发生访问冲突 rnrn其中Find函数是这样的 rnrnint Find(int *parent,int f) rn rn while(parent[f]>0) rn f=parent[f] rn return f; rn rnrn程序调试里说 没有找到符号“n” rn 没有找到符号Find rn但是我明明都有声明变量和函数的rn
读取 位置时发生访问冲突
程序是c语言的,应该是本来在visual C++6.0上运行,但是在visual studio2005上就会有上述问题,很简单的程序,编译没错。rn再详细点说,是一个库里的iopen()函数,里面是string类型的,程序已运行到这就会报错rn谢谢
读取****位置时发生访问冲突
现象如上,我用的是VS2003 C++ ,程序运行的时候出现 “访问冲突”的报错。那时一个将类对象赋0的语句。rnmemset(&m_DeviceInfo,0,sizeof(m_DeviceInfo));rn我把这句注释掉后面 定义一个CString的变量都报错“访问冲突”。CString sTemp;rnrn遇到这样的问题我应该怎么处理啊?不知道应该怎么改?这样才能找到问题的所在?
读取位置时访问冲突
多线程串口通信 。rn1.在程序结束时,DOC 析构时清空输入输出缓冲区,然后结束线程。但结束线程之前,线程进行了OnReceive()(消息响应),在OnReceive()中 CESimulationDoc* pDoc=GetCurrentDoc();获得DoC指针,结果就中断在这里了。rn 是不是Doc已经析构释放,所以找不到DOC,所以中断 。该怎么办呢?rnrn2.另外,缓冲区数据的读写如果在View中进行,线程每隔一秒会发送信息给View,然后读写,就死机了(会一直读)。程序处理消息应该是毫秒级的吧?为啥都反应不过来?rnrn大侠帮忙!
QT读取位置时发生访问冲突
在VS下编写QT小程序测试各种输出时,报了一个很常见又很讨厌的错误“...读取位置...时发生访问冲突”,调试跟进也没有指针乱指、内存未分配、只读却写等问题,在已经放弃了这种输出方法换下一种时,发现UI的参数每初始化一下就会输出一次,但是原本应该是全部初始化后才输出一次的。于是回过头去看UI部分,原来是connect()的位置问题... connect()的位置很可能会导致这种访问冲突问题,当c
求教:读取位置时发生访问冲突
C++编程的时候生成程序没有问题,但运行的时候出现“0x51f0a6c9(mfc100d.dll)处有未经处理的异常:0xC0000005:读取位置0xfefeff66时发生访问冲突”,有知道如何解决的吗?不胜感激!
求解!读取位置时发生访问冲突的问题
今天遇见一个问题,相关代码如下:rn////////////////////////////////rn//HelloWorldScene(h):rn////////////////////////////////rnrn#include "cocos2d.h"rn#include "Box2D/Box2D.h"rn#include "BallScene.h"rn#include "SimpleAudioEngine.h"rnrnclass HelloWorld : public cocos2d::CCLayerrnrn略rnprivate:rn BallScene * BallScene;rnrn;rnrn////////////////////////////////rn//HelloWorldScene(cpp):rn////////////////////////////////rnrn略rnBallScene->newball();rn略rnrnrnrn////////////////////////////////rn//BallScene(h):rn////////////////////////////////rnrn#include "CreateBall.h"rnrnusing namespace cocos2d;rnrnclass BallScene : public cocos2d::CCNodernrnpublic:rn void newball();rnrnprivate:rnrn CreateBall * CreateBall;rn CCSprite* pSprite1;rn Ball *ball;rn rn;rnrnrn////////////////////////////////rn//BallScene(cpp):rn////////////////////////////////rnrnvoid BallScene::newball()rnrn CCSize winsize = CCDirector::sharedDirector()->getWinSize();rn srand((unsigned)time(0));rn ball=CreateBall->getBall((kBallColor)(int (rand() % 2)+1),(kBallType)(int (rand() % 2)));rn pSprite1=ball->sprite;rn pSprite1->setPosition(ccp(winsize.width/2, winsize.height-30));rn addChild(pSprite1,1);rnrnrnrnrnrn////////////////////////////////rn//CreateBall(h):rn////////////////////////////////rnrn#ifndef __CreateBall__rn#define __CreateBall__rn#include "cocos2d.h"rnrnrnusing namespace cocos2d;rnrntypedef enumrnrnred=1,rnpurple,rnrnkBallColor;rnrntypedef enumrnrnsquare=0,rncircular,rnrnkBallType;rnrnclass Ball : public cocos2d::CCObjectrnrnpublic:rn kBallColor color;rn kBallType type;rn CCSprite *sprite;rnrn;rnrnclass CreateBall : public CCLayerrnrnpublic:rn rn CreateBall();rn ~CreateBall();rn Ball* getBall(kBallColor color,kBallType type);rnrn;rnrnrn#endif rnrn////////////////////////////////rn//CreateBall(cpp):rn////////////////////////////////rnrnBall* CreateBall::getBall(kBallColor color,kBallType type)rnrn char file[40] ;rn memset(file, 0, 40);rn rn sprintf(file, "Ball1%d%d.png",color,type);rnrn Ball * ball=new Ball;rnrn ball->sprite=CCSprite::create(file);rn ball->type = type;rn ball->color = color;rnrn return ball;rn rnrnrnrnrn调试时报错:rnrnrn0x00256062 处的第一机会异常(在 fantastic ocean.win32.exe 中): 0xC0000005: 读取位置 0xCDCDF16D 时发生访问冲突。rn0x00256062 处有未经处理的异常(在 fantastic ocean.win32.exe 中): 0xC0000005: 读取位置 0xCDCDF16D 时发生访问冲突。rnrn调用堆栈中错误指向:rnrnball=CreateBall->getBall((kBallColor)(int (rand() % 2)+1),(kBallType)(int (rand() % 2)));rnrn我查了一下说多数是因为指针为NULL报错,可是我看了半天没明白为什么会没有取到。还是说因为其它的错误?rn请高手指点!rnrn
求助!读取位置时发生访问冲突
程序的前半部分如下rn LPBYTE m_pData;rn int hei = pimg->GetHeight();rn int wid = pimg->GetWidth();rn for(int y=0;yGetPixelAddress(x,y); rn rn double *tmp1 = new double[hei*wid];rn for(int y=0;y
对话框程序,读取位置时发生访问冲突
我最近在调一个机器,通过串口线通信,利用ARIA库编写客户端程序来实现各种功能。rn我建立了一个对话框程序RobotControl,CRobotControlDlg中包含一个我自己建立的类的指针:rn[code=c]rnclass CRobotControlDlg : public CDialogrnrn ......rnpublic:rn CRobotClient* client;rnrn[/code]rnrnCRobotClient是我自己建立的类:rn[code=c]rnclass CRobotClientrnrnpublic:rn CRobotClient(int my_argc/*=0*/, char **my_argv/*=NULL*/);rn ~CRobotClient(void);rnpublic:rn CString Connect(void); // 与机器连接rn void DisConnect(); // rnpublic:rn ArRobot robot; //核心类rnrn int argc; rn char **argv; //命令行参数rn;rn[/code]rn其中ArRobot类是ARIA里非常重要的类,绝大部分的控制都可以通过调用它的成员函数来完成。比如rn[code=c]rnrobot.move(3000); /*让它移动*/rnrobot.SetVel(50); /*设置速度*/rn[/code]rn我在一个消息的响应函数中调用控制代码如下:rn[code=c]rn ...rn client->Connect(); /*完成与机器人的通信*/rn ...rn ...rn client->debug(); /*为了调试而建立的不做事情的函数*/rn /*单步调试,运行到接下来的部分会导致崩溃*/rn client->robot.runAsyn(true);rn client->robot.move(300);rn ...rn[/code]rn我每次单步运行到client->robot.runAsyn(true)(所有与robot相关的函数)那里就会产生错误提示如下:rn[img=http://img.my.csdn.net/uploads/201303/15/1363315625_8559.jpg][/img]rnrn我上网查到,这种提示大部分与指针有关,但是实在是找不出错误。请各位帮我解决这个问题,多谢了。
急救:读取位置时发生访问冲突
int BinaryTree::Size(BinTreeNode* &subTree,int &count) //输出二叉树叶子节点的个数以及所有的叶子节点rnrn if((subTree -> leftChild == NULL) && (subTree -> rightChild == NULL))rn rn cout< data;rn count++;rn rn Size(subTree -> leftChild,count);rn Size(subTree -> rightChild,count);rn return count;rn;rnrn运行的时候编译器说 “ 0x00411ae8 处最可能的异常: 0xC0000005: 读取位置 0x00000004 时发生访问冲突”为什么rnrn这是为什么呀?rnrn求各位大侠帮忙!!!
vb.net读取位置时发生访问冲突 的问题
程序中包括调用API 的Structure,当API(DLL文件)函数修改VB.NET传过来的Structure时就会出现:rnWindowsApplication1.exe 中的 0x791fac55 处最可能的异常: 0xC0000005: 读取位置 0x44003d00 时发生访问冲突 。rnrn类似的访问冲突错误,请问此错误怎么解决呢?
写入位置时发生访问冲突
[code=C/C++]rnvoid Reverse(char *pBegin,char *pEnd)rn rn while(pBegin
写入位置时发生访问冲突,求解决
[code=css]rn char *p, arrChar[100] = "testing";rn *arrChar = 'e';rn p = "testing";rn *p = 'k';rn p = arrChar + 1;rn printf("%d\t%d\n",sizeof(arrChar),strlen(arrChar));rn printf("%d\t%d\n",sizeof(char *),strlen(p));rn return 0;[/code]rn运行到*p='k';的时候发生了这个异常,求指点,为什么会抛出异常呢?
0xC0000005: 写入位置时发生访问冲突
#include "stdafx.h"rn#include "stdio.h"rn#include "vd.h"rnrnint _tmain(int argc, _TCHAR* argv[])rnrnrn char as_dem;rn char *point_dem;rn char str_dem[10];rnrn FILE* demp;;rn//....................................dem输入数据rn short dem_arr[668*618];rn demp=fopen("D:\\vdtest\\dem","r+");rn if (demp==NULL)rn printf("can not !");rn else rn //as_dem=fgetc(demp);rn fgets(str_dem,11,demp);rn point_dem=str_dem;rn int i=0;rn while(point_dem!=NULL)rn rn short a=atoi(point_dem);rn dem_arr[i]=a;rn i=i+1;rn //point_dem=rn fgets(str_dem,11,demp);rn point_dem=str_dem;rn rn rn////....................................vd输入数据rn// float vd_arr[668*618];rn////....................................vd输入数据rn// float lst_arr[668*618];rn////....................................vd输入数据rn// float ems_arr[668*618];rn fclose(demp);rn return 0;rnrn注释:dem是一个668*618的ascii存储的整形矩阵,每个数据占10个空格。rn总是运行一会儿开始报错。
C++读取XXX位置时发生访问冲突的一种情况
今天在写到如下代码时出现了访问冲突(执行children.push_back()时出现错误):struct TreeTag { int val; vector<Node> children; }; Node newNode(int val) { Node n = (Node)malloc(sizeof(struct TreeTag)); n->val = val;
VS2008错误:读取位置时发生访问冲突。怎么解决?
功能为把n个数中较大的n/2个数打印出来。程序代码如下:rnvoid main()rnrn int n, i=0,j,u,m,k;rn int num[500];rn while(i<500)rn rn num[i]=0;rn i++;rn scanf("%d",&n);rn k=n/2;rn if(k<=1)rn return;rn for(i=0;inum[k-1])rn j=k-1;rn while(m>num[j]&&j>-1)rn j--;rn for(u=k-1;u>j;u--)rn num[u+1]=num[u];rn num[j+1]=m;rn rn rnfor(i=0;i=402后出错,当数组长度定义为500时,n>=502时出错。出错提示见图片。用wintc做也是同样出错,不知道是怎么回事,如何修改。rn谢谢!rn [img=http://hiphotos.baidu.com/zhidao/pic/item/37d3d539470649ba3a87ce34.jpg][/img]
0xC0000005: 读取位置时发生访问冲突的bug记录
在遇到该bug前发现过类似的bug,都是在程序退出时出现的,认真查了下所有的析构函数,发现有指针未被new出来便释放了,于是使用了常用的safe_delete,释放前判断该指针是否为NULL,再进行相应操作,该方法基本解决了问题。 今天在调试程序时发现一个诡异的现象,debug下关闭程序是正常的,release下关闭程序就会出现上述问题,而程序中所有的指针都通过上述的方法进行安全释放,查了一会发...
为何c语言中会出现读取位置时发生访问冲突
我是写字符串检索。但是如果把jiansuo()这个函数中第二个if(cha(p2)==(p3-p2+1))的话就没问题了。也就是说后边不能==i,如果是i的话,就出错~~nn#includernint cha(char *p1)rnrn int num=0;rn for (char *p = p1; *p!= '\0'; p++)rn rn num++;rn rn return num;rnrnvoid jiansuo(char *p1,char *p2)rnrn for (char *p = p1; p<(p+cha(p1)-cha(p2)); p++)rn rn int i = 0;rn for (char *p3 = p2; *p3 != '\0'; p3++,i++)rn rn if (*p3 != *(p+(p3-p2)))rn rn break;rn rn if (cha(p2)== i)rn rn printf("找到了!在第%d个",p-p1+1);rn return;rn rn rn rn printf("没找到\n");rnrnvoid main()rnrn char *o = "tiandiwuji";rn char *a = "diwu";rn jiansuo(o,a);rn getchar();rn![图片](https://img-ask.csdn.net/upload/201605/09/1462800952_28194.jpg)
VS2015 调试代码时写入位置时发生访问冲突
前一段时间写一个工程,调用自己写的一个库,编译成功,执行时发生了访问冲突; 当时觉得很好奇,这个库不是第一次调用,之前调用过很多次都没有问题,偏偏这次出现了访问冲突; 解决的思路如下: 1. 检查代码,看一下调用接口的代码是否写错, 同时可以通过中断,在vs的调用堆栈窗口查看中断出现的具体步骤,看不懂的就一层一层往外看,直到找到能看懂的代码; 我这里因为调用的接口不多,直接定位了问题出现的...
读取位置 ** 时发生访问冲突
rt.rn程序可以编译通过,只是运行是要求暂停,这是怎么回事?rn提示 读取位置 ** 时发生访问冲突rn这类错误如何解决?rn请高手指教!
字符串逆序问题(解决方案)——及写入位置时发生访问冲突
前景提要:前几天遇到了一个字符串逆序的面试,开始以为很简单,结果写的时候一直告诉我写入位置时发生冲突, 然后就一直想不通,我哪里错了,没错啊,最后看了下大神们的解释,原来是这样的。 开始时我只这样写的: #include "stdafx.h" #include "iostream" using namespace std; void Reverse(char* s) {    
C++程序写入位置时发生访问冲突,求助!!
小弟在学习C++,在看C和C++程序员面试秘笈,第四章面试题2时 遇到了这个问题rnrn先放源程序:rn[code=c]rn#include rnusing namespace std;rn//不使用库函数将整数转换为字符串rnrnvoid int2str(int n, char *str)rnrn char buf[10] = "";rn int i = 0;rn int len = 0;rn int temp = n < 0? -n: n;rnrn if(str = NULL)rn rn return;rn rn while(temp)rn rn buf[i++] = (temp % 10) + '0';//temp的每一位上的数存入bufrn temp = temp / 10;rn rnrn len = n < 0? ++i: i;rn str[i] = 0;rn while(1)rn rn i--;rn if(buf[len - i - 1] == 0)rn rn break;rn rn str[i] = buf[len - i - 1];rn rn if(i == 0)//rn rn str[i] = '-';rn rnrnrnint main()rnrn int nNum;rn char p[10];rnrn cout<<"Please input an integer:"<< endl;rn cin>> nNum;rn cout<<"output:"<
VS2017C语言编程,写入位置时发生访问冲突
#include "stdafx.h"rn#include rn#include rnrnlong long int mov(int);rn//参数1:第j个位置rnlong long int count;rnint coordinate1[13] = 0 ;rn //横坐标rnint coordinate2[13] = 0 ;rn //纵坐标rnint j = 0;rnint m = 0;rnrnint main(void)rnrn count = 0;rn //初始坐标为(0,0)rn count = mov(j);rn printf("%lld\n", count);rn system("pause");rn return 0;rnrnrnlong long int mov(int j)rnrn if (j == 13)rn return 1;rn int new_pos1, new_pos2;rn int i;rn for (i = 1; i < 5; i++)rn rn switch (i)rn rn case 1:rn rn //前进:横坐标不变,纵坐标加1rn new_pos2 = coordinate2[j] + 1;rn new_pos1 = coordinate1[j];rn break;rn rn case 2:rn rn //后退:横坐标不变,纵坐标减1rn new_pos2 = coordinate2[j] - 1;rn new_pos1 = coordinate1[j];rn break;rn rn case 3:rn rn //左移:横坐标加1,纵坐标不变rn new_pos1 = coordinate1[j] + 1;rn new_pos2 = coordinate2[j];rn break;rn rn case 4:rn rn //右移:横坐标减1,纵坐标不变rn new_pos1 = coordinate1[j] - 1;rn new_pos2 = coordinate2[j];rn break;rn rn default:rn break;rn rn int k;rn for (k = j; k >= 0; k--)rn rn if (new_pos1 == coordinate1[k] && new_pos2 == coordinate2[k])rn rn break;rn rn elsern rn coordinate1[j+1] = new_pos1;rn coordinate2[j+1] = new_pos2;rn rn rn if (k >= 0)rn rn continue;rn rn j++;rn m = j;rn count = count + mov(m);rn rn return count;rnrn想根据《程序员的算法趣题》中Q08优秀的扫地机器人的原ruby代码改写C语言程序,结果出现错误。rn机器人从原点出发,上下左右移动,移动12次,经过的坐标点不重复,有多少种路径。rn望各位能够解答小弟程序的问题。
使用sprintf时发生访问冲突
调试程序发现运行到这一行就出错了:rnsprintf(sql, "INSERT INTO Student VALUES(%s, %s, %s, %s, %s)", sno, sname, ssex, sage, sdept);rn这里的sql声明是rnchar* sql;rn或rnchar sql[100];rn显示的错误信息是:rn0x100720a7 (msvcr100d.dll) 处最可能的异常: 0xC0000005: 读取位置 0x0bfb7be7 时发生访问冲突rn求助啊……调试半天还是没搞明白哪里出问题了。
C++报错:读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突
问题截图  问题来源 写队列程序时,分配内存空间时报错。 Q-&amp;gt;front = Q-&amp;gt;rear = (QueuePtr)malloc(sizeof(QNode)); 解决方案 修改Q 的类型,去掉*,不设置指针类型。修改后代码如下: typedef struct QNode { char data; struct QNode *next; }QNode,*Que...
读取位置 0x****时发生访问冲突
1、给一个数组分配了比较小的内存空间,然后又给该数组赋了一个比较大的值,举例说明: char buf[80]; buf = "C++“读取位置 0x****** 时发生访问冲突”的可能原因C++“读取位置 0x****** 时发生访问冲突”的可能原因"; 解决方法:给数组分配更大一些的内存空间 2、句柄或指针在使用前被释放 解决方法:检查代码配合调试,揪出野指针,是否指针空间被提前释放
0xC0000005: 读取位置 0x00000000 时发生访问冲突
关于0xC0000005问题: 0xC0000005: Access Violation错误调试- - 1》数据越界或是定义的指针未释放. 2》空的指针的可能性最大。使用指针前最好能显式的赋值! 应该是指针的问题 3》内存访问错误,检查指针,是否为空,是否越界等 可能性 3 种 :1: char *p; p = new char[number]; delete [] p; .
读取位置 0xccccccc0 时发生访问冲突
#include rnclass FOOrnpublic:rn FOO()rn rn std::cout<<"Constructing.\n";rn return;rn rn FOO(const FOO& other)rn rn std::cout<<"Copy constructing.\n";rn return;rn rn ~FOO()rn rn std::cout<<"Destructing.\n";rn return;rn rn;rnFOO get_object()rnrn FOO obj;rn return obj;rnrnint main()rnrn FOO obj;rn obj = get_object();rn return 0;rnrn执行之后报错rntest2.exe 中的 0x613031ea (msvcr90d.dll) 处未处理的异常: 0xC0000005: 读取位置 0xccccccc0 时发生访问冲突rn请问是怎么回事??
0xC0000005: 读取位置 0x00000048 时发生访问冲突。
如图rn[img=https://img-bbs.csdn.net/upload/201504/09/1428557138_624897.png][/img]rn[img=https://img-bbs.csdn.net/upload/201504/09/1428557121_855386.png][/img]
0xC0000005: 读取位置 0x30FCB000 时发生访问冲突。
循环1000次 大部分时候不会出错 有时也出错rn循环10000次 每次都出错rnrn代码较长 我把关键的代码贴出来 大家帮忙看下rn [code=c]a_Info m_temp;//结构体rn a_fps m_temp_1;rn UINT* temp_Fp=NULL;rn vector m_a_fps;rn rnfor (i=0; im_fingerprint).GetFingerprintLength();rn temp_Fp=(m_lib[i]->m_fingerprint).GetFingerprint();rn m_a_info.push_back(m_temp);rn for(j = 0; j < m_a_info[i].a_Length; j++)rn rn m_temp_1.m_index=j+1;rn m_temp_1.m_fps=temp_Fp[j];//出错的时候总是是在这里rnm_a_fps.push_back(m_temp_1);rn rn [/code]rn 错误是0x00BD1EDC 处有未经处理的异常(在 AudioFeaFiling.exe 中): 0xC0000005: 读取位置 0x30FCB000 时发生访问冲突。rn rn请大家帮忙解释下并提出解决办法
#cocos-2d#0xC0000005: 读取位置 0x00000018 时发生访问冲突
[img=https://img-bbs.csdn.net/upload/201405/09/1399635836_851393.png][/img]rnrn[img=https://img-bbs.csdn.net/upload/201405/09/1399635883_726061.png][/img]rn调试时出现以上问题rnrn回到代码rnrn[img=https://img-bbs.csdn.net/upload/201405/09/1399635905_209020.png][/img]rnrn难道是指针错误?rnrn看了这个cpp的深度解析rnhttp://www.oschina.net/question/565065_79811rnrn觉得代码是和它一样的rnrnrn求解 求解!!!
0xC0000005: 读取位置 0x00000008 时发生访问冲突?
定义:CStringArray str;用来存放图片的路径,实现了添加缩略图到List Control,点击缩略图显示大图,但是右键删除最后一张缩略图,然后再添加一张缩略图到List Control中也没问题,但是点击新添加的缩略图时,发生如题错误提示,程序编译时不报错,运行时发生错误。下面第一个程序是删除图片的程序,rn[code=c]void CPictureDlg::OnDeletePicture() //为“删除图片”添加事件消息rnrn // TODO: 在此添加命令处理程序代码rn int cout=m_ListCtrl.GetItemCount();rn POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition(); rn int idx = m_ListCtrl.GetNextSelectedItem(pos); rn if(idx==cout-1)rn rn m_ListCtrl.DeleteItem(idx); rn cout--;rn str.RemoveAt(idx); rn rnrnvoid CPictureDlg::OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult) //单击缩略图显示大图rnrn LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR);rn // TODO: 在此添加控件通知处理程序代码rn LPNMITEMACTIVATE lpNMItemActivate = (LPNMITEMACTIVATE)pNMHDR; rn LVHITTESTINFO hitTest;rn ZeroMemory(&hitTest, sizeof(LVHITTESTINFO));rn hitTest.pt = pNMItemActivate->ptAction; //位置rn m_ListCtrl.SendMessage(LVM_SUBITEMHITTEST, 0, (LPARAM)&hitTest);rnrn if (hitTest.iItem != nItem && hitTest.iItem >= 0)rn rn nItem = hitTest.iItem; //List Control中当前行号rn //根据ID获得窗口指针再获取与该窗口关联的上下文指针 rn //每个控件都是一个子窗口,它可以包含其他子窗口,成为Parent.rn //经过两次GetParent()函数后到达主窗口,GetDlgItem(控件名)得到主窗口中该控件的窗口指针rn CDC *pDC =m_ListCtrl.GetParent()->GetParent()->GetParent()->GetDlgItem(IDC_STATIC1)->GetDC();rn HDC hdc= pDC->GetSafeHdc(); // 获取设备上下文句柄rn CRect winRect;rn m_ListCtrl.GetParent()->GetParent()->GetParent()->GetDlgItem(IDC_STATIC1)->GetWindowRect(winRect); rn int nWidth=winRect.Width();rn int nHeight=winRect.Height();rn CRect picRect(0,0,nWidth,nHeight);rn CvvImage cimg;rn IplImage *src; // 定义IplImage指针变量srcrn src = cvLoadImage(str[nItem],-1); // 将src指向当前路径目录下的图像,str【nItem】中为图片的路径rn cimg.CopyOf(src,src->nChannels); // 运行到此处出错rn cimg.DrawToHDC(hdc,&picRect);rn // 输出图像rn ReleaseDC(pDC );rn cimg.Destroy(); rn rn *pResult = 0;rn[/code]
xC0000005: 读取位置 0xfeeefef6 时发生访问冲突
n在dev c++上可以正常运行,到了vs2010就报错,怀疑是链表中内存分配出了问题但是找不到,求助n#include nusing namespace std;ntypedef struct peoplenn int num;n int data;n struct people* next;npeople,*Linklist;nvoid InitList (Linklist &L)nn L=new people;n L->next=L;nnint creat(Linklist &L)n int data,num=1;n Linklist r=L,p=L;n cout<<"请依次输入密码(输入-1结束):"<>data;n while(data!=-1)n n p->num=num++;n p->data=data;n p->next=L;n r->next=p;n r=p;n p=new people;n cin>>data; n n return num-1;nnLinklist _delete(Linklist &L,int num)nn Linklist p=L,q=L,Q=L;n int data;n while(p->num!=num)n n q=p;n p=p->next;n n if(p->num==num&&p==L)n n while(Q->next!=L)n Q=Q->next;n Q->next=p->next; n delete p;n n elsen n q->next=p->next;n delete p;n n return q->next;nnint main()nn int start,i,j=0,len;n Linklist L,p;n InitList(L);n len=creat(L);n cout<<"请输入开始数:";n cin>>start;n p=L;n for(j=0;jnext;n n start=p->data;n cout<num<<" "; n p=_delete(L,p->num); n n return 0;nnnnn
0xC0000005: 读取位置 0xcccccccc 时发生访问冲突
[img=https://img-bbs.csdn.net/upload/201502/15/1423973495_945887.png][/img][img=https://img-bbs.csdn.net/upload/201502/15/1423973503_592414.png][/img][img=https://img-bbs.csdn.net/upload/201502/15/1423973512_745527.png][/img]还有哪个大神能告诉我调试方面的知识 本人菜鸟
0xC0000005: 读取位置 xxx时发生访问冲突
解决参考:https://www.kancloud.cn/wangshubo1989/pit/100967 最近编写代码遇到了这个错误导致程序崩溃,原因是访问了非法的地址 造成此问题出现的原因有: 1. 访问非法的内存地址 2.malloc 或者new 的空间没有释放,或者提前释放访问了野指针,或者访问了超出已开辟的空间地址大小 经过调试发现,Qt 的一个窗口提前释放内存了,所以指...
0xC0000005: 读取位置 0x00000020 时发生访问冲突
如题 rn是什么原因 rn如何解决
读取位置 0xcdcdcdc1 时发生访问冲突
调试时到了interface.cpp里的db->Append_back(info1);这一行的时候就提示“读取位置 0xcdcdcdc1 时发生访问冲突”rn请帮我看看是怎么回事rnrn[code=C/C++]//head.hrn#ifndef H_HEADrn#define H_HEADrnrn#include "database.h"rn#include "information.h"rnrnusing namespace DATABASE;rnrnvoid console();rnrn#endif[/code]rn[code=C/C++]//interface.cpprn#ifndef H_INTERFACErn#define H_INTERFACErnrn#include "head.h"rn#include rn#include rnusing namespace std;rnrnextern DataBase* db;rnconst char* infos[] = "请输入指令:\n", //0rn "建立新的数据库\n", //1rn "编辑数据库\n", //2rn "打印数据库\n", //3rn "浏览数据库\n", //4rn "备份数据库\n", //5rn "还原数据库\n", //6rn "退出程序\n", //7rn "下一条记录\n", //8rn "上一条记录\n", //9rn "添加新纪录\n", //10rn "删除本条记录\n", //11rn "编辑本条记录\n", //12rn "返回到上一级\n", //13rn "请按次输入:\n\t姓名\n\t性别\n\t年龄\n\t地址\n\t电话号码\n\t电话号码2\n\t以空格分开\n\t跳过的项目以两个以上个空格表示\n",//14rn "数据库不存在\n" //15rn ;rnconst char* OMf = "%n$%s$%a$%l$%p$%q#";rnconst char* OMp = "%n\t%s\t%a\t%l\t%p\n";rnrnrnvoid console()rnrn char in = 0;rn /*if (!access("friends.dat",0))rn rn rn */rn dorn rn cout<< "---\t" << infos[0]rn << "1\t---\t" << infos[1]rn << "2\t---\t" << infos[2]rn << "3\t---\t" << infos[3]rn << "4\t---\t" << infos[4] rn << "5\t---\t" << infos[5] rn << "6\t---\t" << infos[6] rn <<"Q\\q\t---\t" << infos[7]rn << endl;rn if(cin >> in)rn rn switch (in)rn rn case '1': delete db;rn db = new DataBase;rn break;rnrn case '2': if (db == 0)rn rn cout << infos[15] << endl;rn break;rn rn do rn rn cout<< "\t1\t---\t" << infos[8]rn << "\t2\t---\t" << infos[9]rn << "\t3\t---\t" << infos[10]rn << "\t4\t---\t" << infos[11]rn << "\t5\t---\t" << infos[12]rn << "\tB\\b\t---\t" << infos[13]rn << endl;rn cin >> in;rn switch(in)rn rn case '1': db->Next();rn break;rn case '2': db->Previous();rn break;rn case '3': cout<< "\t---\t" << infos[14] << endl;rn rn char n[12];char _s[3];bool s=Info::Male;int a;string l;char p[15];char q[15];rn cin >> n >> _s >> a >> l >> p >> q;rn if (_s == "女") s = Info::Female;rn Info info1(n,s,a,l,p,q);rn db->Append_back(info1);rn rn break;rn rn while(cin && in != 'B' && in != 'b');rn break;rn rn case '4': if (db == 0)rn rn cout << infos[15] << endl;rn break;rn rn rn IO io1(*db);rn io1.Output(cout,OMp);rn rn break;rnrn case 'Q': return;rn case 'q': return;rn rn rn while (cin);rnrn#endif[/code]rn[code=C/C++]//information.cpprn#include "information.h"rn#include rnrnvoid Info::Output(ostream& os,const char* omode)rnrn int i = 0;rn while(omode[i] != '\0')rn rn switch (omode[i])rn rn case '%':rn switch(omode[++i])rn rn case 'n':rn os << name;rn break;rn case 's':rn os << ((sex==Info::Male)?"男":"女");rn break;rn case 'a':rn os << age;rn break;rn case 'l':rn os << location;rn break;rn case 'p':rn if (phone != 0)rn os << phone;rn break;rn case 'q':rn if (phone2 != 0)rn os << phone2;rn break;rn rn break;rn default:rn os << omode[i];rn break;rn rn i++;rn rnrnrnInfo::Info(const Info& info2):location(info2.location),age(info2.age),sex(info2.sex)rnrn if (&info2 == this)rn return;rn delete[] phone;rn delete[] phone2;rn phone = new char[sizeof(info2.phone)/sizeof(char)];rn phone2 = new char[sizeof(info2.phone2)/sizeof(char)];rn int i = 0;rn while (info2.phone[i] != '\0')rn phone[i] = info2.phone[i++];rn phone[i] = '\0';rn i = 0;rn while (info2.phone2[i] != '\0')rn phone2[i] = info2.phone2[i++];rn phone2[i] = '\0';rnrn i = 0;rn while (info2.name[i] != '\0')rn name[i] = info2.name[i++];rn name[i] = '\0';rnrnrnInfo::Info(char* n,bool s,int a,string l,const char* p,const char* p2):location(l),age(a),sex(s)rnrn phone = new char[strlen(p)+1];rn phone2 = new char[strlen(p2)+1];rn int i = 0;rn while (p[i] != '\0')rn phone[i] = p[i++];rn phone[i] = '\0';rn i = 0;rn while (p2[i] != '\0')rn phone2[i] = p2[i++];rn phone2[i] = '\0';rnrn i = 0;rn while (n[i] != '\0')rn name[i] = n[i++];rn name[i] = '\0';rn[/code]rn[code=C/C++]//information.hrn#ifndef H_INFORMATIONrn#define H_INFORMATIONrnrn#include rn#include rnusing namespace std;rnrnclass Infornrnprivate:rn char name[12];rn bool sex;rn int age;rn string location;rn char* phone;rn char* phone2;rnpublic:rn enum SEXMale = true,Female = false;rn explicit Info()rn explicit Info(char* n,bool s,int a,string l,const char* p=0,const char* p2=0);rn explicit Info(const Info& info2);rnrn const char* Getname()return name;rn bool Getsex()return sex;rn int Getage()return age;rn string& Getlocation()return location;rn const char* Getphone()return phone;rn const char* Getphone2()return phone2;rnrn void Output(ostream& os,const char* omode);rn;rnrn#endif[/code]rn[code=C/C++]//database.hrn#ifndef H_DATABASErn#define H_DATABASErnrn#include rn#include rnusing namespace std;rnnamespace DATABASErnrnrntemplate rnclass DataBasernrnprivate:rn typedef typename list::iterator Pointer;rn list datas;rn Pointer pointer;rnpublic:rn DataBase():pointer(datas.begin())rn ~DataBase()rn //DataBase(DataBase& db2)rn void Append_back(T& data)datas.push_back(data);rn void Append_front(T& data)datas.push_front(data);rn rn void Delete()datas.erase(pointer);rn void Modify(const T& data)pointer = data;rn void Get(T& data)data = *pointer;rnrn void GoTop()pointer = datas.begin();rn void GoBottom()pointer = datas.end();rnrn void Next()pointer++;rn void Previous()pointer--;rnrn bool eof()return pointer == datas.end();rn bool bof()return pointer == datas.begin();rn;rnrntemplate rnclass IOrnrnprivate:rn DataBase& db;rnpublic:rn IO(DataBase& d):db(d)rn void Output(ostream& os,const char* omode);rn void Input();rn;rnrntemplate rnvoid IO::Output(ostream& os,const char* omode)rnrn T data;rn db.GoTop();rnrn while(!db.eof())rn rn db.Get(data);rn data.Output(os,omode);rn db.Next();rn rnrnrn#endif[/code]rn[code=C/C++]//main.cpprn#include "head.h"rnDataBase* db = 0;rnrnint main()rnrn console();rnrn delete db;rn return 0;rn[/code]
0xC0000005: 读取位置 0x00000010 时发生访问冲突
本人最近在用wincap做一个网络数据分析工具,遇到下面这个问题,总是出错。rn代码:rn数据时存在一个m_localDataList的链表中的,现在遍历链表,显示数据详情rn struct datapkt* local_data;rn localpos = dlg->m_localDataList.GetHeadPosition();rn while(localpos!=NULL)rn rn //获取到链表中的一个数据包rn local_data = (struct datapkt*)(dlg->m_localDataList.GetNext(localpos));rn str.Empty();rn struct in_addr ins; rn ins.S_un.S_addr = local_data->iph->daddr; rn str = CString(inet_ntoa(ins)); rn rnrn总是在 ins.S_un.S_addr = local_data->iph->daddr; 报错,错误如题,求大神赐教
0xC0000005: 读取位置 0x0000000c 时发生访问冲突
使用的是CAsyncSocket,if (pState->m_pmapSocketHandle->IsEmpty())在这里发生访问冲突?rn很奇怪,程序并没有多线程,就是用了timer而已。主线程操作,也会出访问冲突?
相关热词 c# login 居中 c# 考试软件 c# 自然语言分析 c# 分段读取文件 c# 泛型反射 c#打断点 c# 时间转多少秒 c# 线程函数加参数 c# modbus 读取 c#查询集合表