请大家帮我看看这是什么错误,本人初学者,谢谢大家!

purpleshell 2004-11-05 09:17:33
程序运行一段时间后怎么出现这样的错误:
First-chance exception in LLBS6.exe: 0xC0000005: Access Violation.
实在不知道问题出在何处?
...全文
98 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
purpleshell 2004-11-05
  • 打赏
  • 举报
回复
首先谢谢大家的关注 在此我把这段代码贴出来 希望大家给以指点

void LLBSRGClient::AddBuffer(DATA_PACKET* pData,BOOL isFee)
{
if(!pData || pData->start != 0xA5)
return;

// 检查发送方是否为包月用户
SPSENDSM* pSendSm = (SPSENDSM*)pData->pDataBuffer;

//SOCKCLIENT* pSock = pMainTread->m_ListSock.GetDataFromMoble(pSendSm->szDestID);
SOCKCLIENT* pSock = pMainTread->m_ListSock.GetDataFromMoble(pSendSm->szSrcID);

//添加此代码保证从聊天界面上显示给用户下行的消息 2004-10-22 zzf
SPRecvSM temp1;
//ZeroMemory(temp, sizeof(SPRecvSM));
strcpy(temp1.szSrcID, pSendSm->szDestID);
strcpy(temp1.szDestID, pSendSm->szSrcID);
strcpy(temp1.szSubject, pSendSm->szSubject);

int kinds = 2;

if(pSock) //是否包月
{
if((pSock->m_bMonthUser == 1) && (isFee!=TRUE))
{
kinds = 1;
strcpy(pSendSm->szFeecode, "0000");
strcpy(pSendSm->szFeetype, "01");

}
}
pDlg->DisPlayInfo(&temp1,kinds);
SendPacket(pData);
}
次函数是程序之间通讯时给另一个程序发送数据的的前面定义,具体交给SendPacket(pData);这个函数执行,我是今年才毕业的以前没有接触过vc++这些程序是前人写的 我在做一些维护,顺便改一些地方
程序运行一段时间后就报错,没有规律,最后停留在if((pSock->m_bMonthUser == 1) && (isFee!=TRUE))这段代码上 ,我察看变量pData和pSock指针都有值,可是内存中值却不是正确的数据,程序中有不少地方调用次函数,我也不知道怎么追踪,保证传入到次函数的pData指针保证正确 还望高手们指教 谢谢
bit1010 2004-11-05
  • 打赏
  • 举报
回复
不冲突,就像全局变量和一个局部变量可以同名的存在一个文件之中。
cryptonym 2004-11-05
  • 打赏
  • 举报
回复
pSendSm 这个指针有么有分配空间丫?
老夏Max 2004-11-05
  • 打赏
  • 举报
回复
呵呵,另外看你的程序注释,你好像是写电信方面的程序的?是不?(纯粹是为了看看我的判断是否正确)
老夏Max 2004-11-05
  • 打赏
  • 举报
回复
temp1,pData的值应该进行有效性判断,看看是否为空,如果是多线程,一定要注意同步!

下面的SendPacket(pData);这个函数体中定义了一个state int i;不知道他是否和本处的i有冲突,导致报错
=======================================
理论上这样不会导致错误,i在本函数中只是临时变量(局部变量),在函数执行完以后就会被销毁了,不会和全局的或者是静态的变量有冲突!

看你写的代码,你应该也不是刚毕业的了,应该注意在程序中对所有的变量先初始化再使用,在涉及到关键步骤的操作的时候注意先判断其有效性。
purpleshell 2004-11-05
  • 打赏
  • 举报
回复
这位大哥先谢谢你了,我还是有点不明白我程序中的代码如下
int i = 2;
if(pSock) //是否包月
{
if((pSock->m_bMonthUser == 1) && (isFee!=TRUE))
{
kinds = 1;
strcpy(pSendSm->szFeecode, "0000");
strcpy(pSendSm->szFeetype, "01");

}
}
pDlg->DisPlayInfo(&temp1,i);
SendPacket(pData);
我在此处初始化了一个变量i,pSock是程序中搜索数据的得到的指针,根据里面的变量值对i值进行赋值,然后在pDlg->DisPlayInfo(&temp1,i);中在界面显示
下面的SendPacket(pData);这个函数体中定义了一个state int i;不知道他是否和本处的i有冲突,导致报错,还望指教
谢谢
老夏Max 2004-11-05
  • 打赏
  • 举报
回复
初始化错误!你的成员变量需要初始化。这是访问越界错误!好好检查一下!!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧