strcore.cpp(118) : {576} normal block at 0x003454F8, 30 bytes long.
Data: < > 02 00 00 00 11 00 00 00 11 00 00 00 D5 FD D4 DA
strcore.cpp(118) : {105} normal block at 0x00345CC0, 78 bytes long.
Data: < & A > 01 00 00 00 26 00 00 00 41 00 00 00 B7 FE CE F1
{100} normal block at 0x00345960, 240 bytes long.
Data: <P L > 50 0B 00 00 E4 0A 00 00 00 00 CD CD 4C 0B 00 00
strcore.cpp(118) : {99} normal block at 0x003458F8, 40 bytes long.
Data: < E:\O> 01 00 00 00 1B 00 00 00 1B 00 00 00 45 3A 5C 4F
strcore.cpp(118) : {82} normal block at 0x00345230, 20 bytes long.
Data: < 0.0.> 01 00 00 00 07 00 00 00 07 00 00 00 30 2E 30 2E
{81} normal block at 0x003451C8, 33 bytes long.
Data: < E:\Online_Updat> 00 45 3A 5C 4F 6E 6C 69 6E 65 5F 55 70 64 61 74
strcore.cpp(118) : {80} normal block at 0x00345160, 40 bytes long.
Data: < E:\O> 01 00 00 00 1B 00 00 00 1B 00 00 00 45 3A 5C 4F
strcore.cpp(118) : {79} normal block at 0x003450D8, 62 bytes long.
Data: < 1 1 "E:\> 01 00 00 00 31 00 00 00 31 00 00 00 22 45 3A 5C另外,我装了Purify, rose2003的,奇怪的是,每次使用都不起作用!:(
建立一个控制台应用程序,竟然不报内存泄漏!!!
void main()
{
int *pInt = new int;
}大家评论一下。
Data: < > 02 00 00 00 11 00 00 00 11 00 00 00 D5 FD D4 DA
strcore.cpp(118) : {105} normal block at 0x00345CC0, 78 bytes long.
Data: < & A > 01 00 00 00 26 00 00 00 41 00 00 00 B7 FE CE F1
{100} normal block at 0x00345960, 240 bytes long.
Data: <P L > 50 0B 00 00 E4 0A 00 00 00 00 CD CD 4C 0B 00 00
strcore.cpp(118) : {99} normal block at 0x003458F8, 40 bytes long.
Data: < E:\O> 01 00 00 00 1B 00 00 00 1B 00 00 00 45 3A 5C 4F
strcore.cpp(118) : {82} normal block at 0x00345230, 20 bytes long.
Data: < 0.0.> 01 00 00 00 07 00 00 00 07 00 00 00 30 2E 30 2E
{81} normal block at 0x003451C8, 33 bytes long.
Data: < E:\Online_Updat> 00 45 3A 5C 4F 6E 6C 69 6E 65 5F 55 70 64 61 74
strcore.cpp(118) : {80} normal block at 0x00345160, 40 bytes long.
Data: < E:\O> 01 00 00 00 1B 00 00 00 1B 00 00 00 45 3A 5C 4F
strcore.cpp(118) : {79} normal block at 0x003450D8, 62 bytes long.
Data: < 1 1 "E:\> 01 00 00 00 31 00 00 00 31 00 00 00 22 45 3A 5C另外,我装了Purify, rose2003的,奇怪的是,每次使用都不起作用!:(
建立一个控制台应用程序,竟然不报内存泄漏!!!
void main()
{
int *pInt = new int;
}大家评论一下。
解决方案 »
- 矩形与区域的剪裁
- 如何记忆使用LVS_EX_HEADERDRAGDROP扩展类型拖拽后的列表布局?
- 高手帮帮忙,我做了一个Tcp/ip文件传输程序,开了十个线程。传输小文件可以正确传输,大文件就出错
- 如何用钩子截获粘贴事件
- 数据库格式不对怎么回事? 急!!
- 好忙,快不记得老爸什么名字了。
- 有存储int型的数组吗? --!
- ********疯了.这也会出错.**************
- 写文件速度问题,在线等,马上给分
- 串口问题
- 如何改变list box里字的颜色?
- 动态链接库中 用 AFX_EXT_CLASS 声明输出类, 这种做法好不好? 为什么同样的代码(vc6.0)在vc7.0就编译不能通过?
从特征数据上追察30 bytes long, 240 bytes long
从字节数上找
看来MFC不适合继续开发下去了。
1、你new了CString类对象,而没有delete它。
2、你的某个类里面有CString类的数据成员,你new了这个类的对象但没有delete。
{
CString strTipInfo;
CTCPServerSession *self = (CTCPServerSession *)pParam; strTipInfo.Format("服务器启动成功, 正在监听 %d 端口...", self->m_nServerPort);
self->m_pLink->OnServerMessage(strTipInfo); while(1)
{
sockaddr_in addrClient;
int iAddrSize = sizeof(addrClient); SOCKET socketClient = accept(self->m_socketServer, (struct sockaddr *)&addrClient, &iAddrSize);
if(socketClient == SOCKET_ERROR)
{
char szErrorInfo[128];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, WSAGetLastError(), NULL, szErrorInfo, 100, NULL);
TRACE("CTCPServerSession::MainServerProc : %s \n", szErrorInfo);
break;
} char szClientIP[32] = {0};
sprintf(szClientIP, "%d.%d.%d.%d", addrClient.sin_addr.S_un.S_un_b.s_b1,
addrClient.sin_addr.S_un.S_un_b.s_b2,
addrClient.sin_addr.S_un.S_un_b.s_b3,
addrClient.sin_addr.S_un.S_un_b.s_b4); strTipInfo.Format("%s连接到服务器...\n", szClientIP);
self->m_pLink->OnServerCurrentStatus(strTipInfo); FILE_TRANSFER_SEND_INFO FTSI;
FTSI.socket = socketClient;
FTSI.hEvent = NULL;
FTSI.dwMaxSpeed = self->m_dwMaxSpeed;
FTSI.strServerRootDir = self->m_strServerRootDir;
strcpy(FTSI.szClientIP, szClientIP);
ASSERT(self->m_pLink != NULL);
FTSI.pLink = (LPVOID)self->m_pLink;
CFileTransferWorker *pFileTransferWorker = new CFileTransferWorker(FTSI);
self->m_threadpool.ProcessJob(pFileTransferWorker); } return 0;
}其中的 while循环没有中断机制,大家一般采取什么办法来中断while循环?
服务器很可能在accept这里停住了啊。
中止while可以CreateEevet()一个事件放在while(1)里等待,
等要退出的时候SetEvent()好了
你可以在退出线程处设置一个信号量
::WaitForSingleObject(pCCommThread->CommOpenSemaphore(), 10000);
在线程函数退出处释放信号量。这样就可以正常退出。
必须注意的是,在线程函数中如果与主窗体有交互的话,可能会导致阻塞。比如在线程中有SendMessage函数
在程序关闭的时候线程如果还在发送消息,这样就会阻塞。