出现了一个异常 mischelper.h

emptyzzj 发布于 2016/12/02 15:33
阅读 334
收藏 0

@伤神小怪兽 你好,想跟你请教个问题:

程序运行一段时间后,报如下的错误:

Debug Assertion Failed!

Program: D:\DCG_6656_104\DataCenter.exe
File: e:\mywork\zeversolar\new propram\hp-socket-master\hp-socket\src\mischelper.h
Line: 81


Expression: pBuffer != nullptr


For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.


(Press Retry to debug the application)

请问下是哪里有问题?



加载中
0
e
emptyzzj

我在OnReceive 里面 先Peek固定字节,然后检查这些字节的格式是否符合协议。

然后在Fetch出该字节,作为协议头; 从协议头中解析出协议体长,再Fetch一次,得到完整的消息。

0
e
emptyzzj
virtual EnFetchResult Peek(CONNID dwConnID, BYTE* pData, int iLength)
{
TBuffer* pBuffer = m_bfPool[dwConnID];
return ::PeekBuffer(pBuffer, pData, iLength);

}

是不是m_bfPool被分配完了?还是dwConnID为空了


0
e
emptyzzj
在调用peek函数时,如果connid不存在,则就会引发pBuffer != nullptr的断言
0
e
emptyzzj
但是我又是在OnReceive里面调用 peek的,为什么会connid不存在呢?
0
e
emptyzzj
有没有可能在我peek数据处理业务逻辑时,时间过长,而此时客户端socket断开了,导致这样的情况。
0
伤神小怪兽
伤神小怪兽
多半是因为你传入不存在的connid
返回顶部
顶部