我在一个线程中有如下的代码:
......
......
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系统下会出现这样的问题。高手们帮忙想想办法?
......
......
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系统下会出现这样的问题。高手们帮忙想想办法?
问题可能出在内部有内存分配没有释放4K的大小可能和网卡的内部接收RAM数据拷贝出来有关系
可以确定是CREATE有问题。应该是该函数内部申请了内存没有及时释放的原因。可是该怎么解决哪
于是系统也是每一MAC设备4K缓存,问题可能在这里,拷贝过程中分配了内存没有释放
响应OnButton1的时候改为while (TRUE){...}试验的
如果没有close内存使用的确是4K的上升把Close加上就好了
源代码地址:http://www.vckbase.com/code/downcode.asp?id=2628(网络监听程序)
不过朋友朋如果用MFC的CSocket试一试就会出现我说的问题了!
谢谢朋友们的参与与指导!尤其谢谢MSDN3000(八门金锁)!