if (m_pHashTable == NULL) 是干什么用的?

win_book 2003-09-29 05:02:26
一个基于对话框的程序,起了一个线程做Socket连接,执行Create的时候就出错了,
Access Violation,跟踪后就到了MAP_P.CPP
void* CMapPtrToPtr::GetValueAt(void* key) const

if (m_pHashTable == NULL) 这一句
return NULL;


UINT MyConnTest(LPVOID param)
{
CSocket ss;

ss.Create();

void CDlg::OnTest()
{
ctThread = AfxBeginThread(MyConnTest,NULL,0,0,0);
if ( ctThread == NULL )
{
}
}

调过AfxSocketInit()了
...全文
201 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
everandforever 2003-10-01
  • 打赏
  • 举报
回复
大约是通过句柄查找窗口指针时, 没有找到.

在线程里面,不要用MFC的SOCKET类.
bluebohe 2003-10-01
  • 打赏
  • 举报
回复
就是判断这个指针是不是指向零地址啊,是指向零地址的话,可以认为还没有为这个指针申请空间
bluebohe 2003-10-01
  • 打赏
  • 举报
回复
就是如果这个指针没被申请空间,
唉也不能这么说,只能说判断该指针是不是指向零地址
akiko 2003-10-01
  • 打赏
  • 举报
回复
void* CMapPtrToPtr::GetValueAt(void* key) const

if (m_pHashTable == NULL) 这一句
return NULL;
看起来是通过参数key在m_pHashTable查找Value,由m_pHashTable的命名推知该变量是一个指针,如果m_pHashTable指向0,自然是找不到(这时如果对m_pHashTable操作要产生访问违规),所以就直接返回0.
tonybaobao 2003-09-30
  • 打赏
  • 举报
回复
up
danfeng 2003-09-30
  • 打赏
  • 举报
回复
从程序来看 这句代码就是检查该map是否为空
如果为空就直接返回null 以免造成对map的越界操作
win_book 2003-09-30
  • 打赏
  • 举报
回复
up

18,355

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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