为什么这样一个while会出现内存问题呢。。。
这是一个检索网络活动主机的程序:
- C/C++ code
while(ntohl(startip)<=ntohl(endip))//起始IP<结束IP { if(threadnumcounter>threadnumlimit)//线程数量超过限制数量(我设的是20) { Sleep(1000); continue; } sockaddr_in * pipaddrtemp=new(sockaddr_in); if(!pipaddrtemp) { cout<<"memory alloc failed"<<endl; return; } *pipaddrtemp=dest; //创建新线程 hthread=CreateThread(NULL,NULL,FindIp,(LPVOID)pipaddrtemp,NULL,NULL);//创建线程发送接收ICMP包 CloseHandle(hthread); startip=htonl(ntohl(startip)+1);//IP加1 dest.sin_addr.s_addr=startip; }能成功搜出IP 但是总在最后出现提示框写调用的内存“0x0000000”不能为“read” 是因为申请内存的问题吗?
[解决办法]
hthread=CreateThread(NULL,NULL,FindIp,(LPVOID)pipaddrtemp,NULL,NULL);
是不是要判断一下是否创建成功?
if(hthread!=NULL)
[解决办法]
单步执行跟踪一下 看书哪一步出了问题
是不是CloseHandle出了问题
[解决办法]