我在一个线程中有如下的代码:
......
......
while(1)
{
     CSocket * pSocket = new CSocket();
     if(pSocket->Create())
     {
if(pSocket->Connect(ip,atoi(port)))
{
     pSocket->Send(msg.GetBuffer(),msg.GetLength());
}
      }
      delete pSocket;
}
......
程序运行时发现,内存的使用在不断的增大,(以4k倍数大小)调试发现是该段代码的原因。
好像Create()后,在delete内存并没有完全释放掉,只有在XP系统下会出现这样的问题。高手们帮忙想想办法?

解决方案 »

  1.   

    试一试把Create里面的代码注释掉看看??
    问题可能出在内部有内存分配没有释放4K的大小可能和网卡的内部接收RAM数据拷贝出来有关系
      

  2.   

    怎么注释掉呀!是CSOCKET内部实现的呀
    可以确定是CREATE有问题。应该是该函数内部申请了内存没有及时释放的原因。可是该怎么解决哪
      

  3.   

    一般MAC芯片内部是4K缓存,可配置
    于是系统也是每一MAC设备4K缓存,问题可能在这里,拷贝过程中分配了内存没有释放
      

  4.   

    我是在WINDOWS的任务管理器中看到内存在不断增加的。几乎都是在每次CREATE后。解决问题的办法是什么样子的哪!而且奇怪的是WIN2000下,没有问题。只有在XP下好像有!
      

  5.   

    刚才我试了一下,在XP平台应该是没有close的问题,我是在VC知识库找了一份源码
    响应OnButton1的时候改为while (TRUE){...}试验的
    如果没有close内存使用的确是4K的上升把Close加上就好了
    源代码地址:http://www.vckbase.com/code/downcode.asp?id=2628(网络监听程序)
      

  6.   

    加上close就可以了.创建了就需要close,然后删除指针..
      

  7.   

    SDK socket是没有问题的。我知道这样解决!已经用改方法解决了。
    不过朋友朋如果用MFC的CSocket试一试就会出现我说的问题了!
    谢谢朋友们的参与与指导!尤其谢谢MSDN3000(八门金锁)!