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()的操作的,我对里面的一些后续处理的部分进行了修改,不知道怎么地就不能对链表执行了。 展开
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()的操作的,我对里面的一些后续处理的部分进行了修改,不知道怎么地就不能对链表执行了。 展开
2个回答
展开全部
POSITION pos = clist->GetHeadPosition();这一句报错,说明clist对象有问题,clist是一个指针,使用前要new出来。
即在调用POSITION pos = clist->GetHeadPosition();之前是否执行了
clist = new CPtrList;
即在调用POSITION pos = clist->GetHeadPosition();之前是否执行了
clist = new CPtrList;
更多追问追答
追问
额,我的clist 是在套接字类里面定义的类成员变量。因为我现在的程序是在一个网络聊天例程上面改的,clist 是专门用来存储客户端列表的。
追答
clist是CClientSocket的成员变量没错,
如果clist的声明为如下,则不需要调用clist = new CPtrList;
CPtrList clist
如果clist的声明为如下,则需要调用clist = new CPtrList;因为clist只是个指针,没有进行初始化。
CPtrList *clist
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询