MFC网络编程,我从主窗口类中通过定义的套接字对象调用套接字类中的函数发送信息给客户端,但是内存报错

在主窗口类中,定义套接字client,然后调用套接字类的自定义函数FindList():CClientSocket*client=NULL;client->FindLis... 在主窗口类中,定义套接字client,然后调用套接字类的自定义函数FindList():
CClientSocket *client=NULL;
client->FindList(str);
在FindList()中,从链表CPtrList *clist中找到存储的该客户端对应的套接字
CClientSocket *cu = NULL;
POSITION pos = clist->GetHeadPosition();
while (pos != NULL)
{
CClientSocket *cu:
curr = (CClientSocket *)clist->GetNext(pos);

if(....)根据IP判断是否为符合筛选的客户端套接字,如果符合,
{
curr->Send(name, sizeof(buff));
}

但实际上在FindList()执行到对链表的操作时就会内存报错,根本无法继续,也就是:
POSITION pos = clist->GetHeadPosition();这一句就内存报错,请问怎么搞?
我的clist在每次添加新的客户端套接字之前,都有new操作。而且在我修改之前的源程序也是可以进行POSITION pos = clist->GetHeadPosition()的操作的,我对里面的一些后续处理的部分进行了修改,不知道怎么地就不能对链表执行了。
展开
 我来答
ysdoc
2012-10-11 · TA获得超过746个赞
知道小有建树答主
回答量:586
采纳率:60%
帮助的人:399万
展开全部
POSITION pos = clist->GetHeadPosition();这一句报错,说明clist对象有问题,clist是一个指针,使用前要new出来。
即在调用POSITION pos = clist->GetHeadPosition();之前是否执行了
clist = new CPtrList;
更多追问追答
追问
额,我的clist 是在套接字类里面定义的类成员变量。因为我现在的程序是在一个网络聊天例程上面改的,clist 是专门用来存储客户端列表的。
追答
clist是CClientSocket的成员变量没错,
如果clist的声明为如下,则不需要调用clist = new CPtrList;

CPtrList clist
如果clist的声明为如下,则需要调用clist = new CPtrList;因为clist只是个指针,没有进行初始化。
CPtrList *clist
jou92456
2012-10-11 · 贡献了超过262个回答
知道答主
回答量:262
采纳率:0%
帮助的人:57.6万
展开全部
#包括<winsock2.h>看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式