MFC 内存泄露 本帖最后由 VisualEleven 于 2013-05-31 16:38:09 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 “IP” 这个字符串是IP吗? 拿个非法ip来测试 出什么问题自己去看源码... thread_handle = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)thread_main,mySocket,0,&thread_tid); 这只是举例用,程序中当然是正常的IP。或者这么说,如果线程函数里面没有CString strTmpIP = pSocket->strIP;都是一些int型,比如int nPort = pSocket->nPort;结果就没有泄露,但是只要你用上CString,就有泄露提示,地址偏移为0x10. mySocket是我定义的,如下typedef struct { CString strIP; CString strName; int nPort;} MySocket;和这个没关系,这个值正确传过去了。如果线程函数里面没有CString strTmpIP = pSocket->strIP;都是一些int型,比如int nPort = pSocket->nPort;结果就没有泄露,但是只要你用上CString,就有泄露提示,地址偏移为0x10.自己试试看 StartMonitorThread里的MySocket* mySocket = new MySocket(); 这个没释放吧 StartMonitorThread函数中你new了一个MySocket对象的指针,你并没有delete它? MySocket* pSocket = (MySocket*)lpParam;。 delete pSocket;这里不是啊,不是我分配的内存没释放,提示的是f盘,可是我只有C,D盘,是系统自己分配的内存。 MySocket* pSocket = (MySocket*)lpParam;。 delete pSocket;这里不是啊,不是我分配的内存没释放,提示的是f盘,可是我只有C,D盘,是系统自己分配的内存。 我觉得应该是线程函数里面不能使用CString。但是为什么地址会偏移0x10,这是我好奇的地方 MySocket* pSocket = (MySocket*)lpParam;。 delete pSocket;这里不是啊,不是我分配的内存没释放,提示的是f盘,可是我只有C,D盘,是系统自己分配的内存。你并没有将它传递给你的线程函数~ MySocket* pSocket = (MySocket*)lpParam;。 delete pSocket;这里不是啊,不是我分配的内存没释放,提示的是f盘,可是我只有C,D盘,是系统自己分配的内存。你并没有将它传递给你的线程函数~额,代码被我弄替代方案的时候改错了应该是thread_handle = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)thread_main,mySocket,0,&thread_tid);我说了,我分配的都释放了,用VLD提示没有内存泄露,但是vs2010本身提示有,觉得好奇,跟踪了一下,结果发现这个地址好奇怪 vc++中如何将excel 内的内容分割 控制台操作怎么让控制台的输入和输出不冲突? 视频硬解思路? 给datoucaicai的另外的分,刚才的分不够,先给50现在再加20 对话框数之间据交换 怎么让一个无模式对话框一直停留在它父窗口的顶层? 怎样创建多线程,最好有源码,谢谢。 求救! 构造法生成随机数 作用与 UNREFERENCED_PARAMETER宏相同的诀窍! 使用旧CvvImage的功能opencv3.4.3对应是哪个类????? 这样分割单文档窗口怎么一点效果都没有?
mySocket,0,&thread_tid);
typedef struct
{
CString strIP;
CString strName;
int nPort;
} MySocket;
和这个没关系,这个值正确传过去了。如果线程函数里面没有CString strTmpIP = pSocket->strIP;都是一些int型,比如int nPort = pSocket->nPort;结果就没有泄露,但是只要你用上CString,就有泄露提示,地址偏移为0x10.自己试试看
MySocket* pSocket = (MySocket*)lpParam;
。
delete pSocket;这里不是啊,不是我分配的内存没释放,提示的是f盘,可是我只有C,D盘,是系统自己分配的内存。
MySocket* pSocket = (MySocket*)lpParam;
。
delete pSocket;这里不是啊,不是我分配的内存没释放,提示的是f盘,可是我只有C,D盘,是系统自己分配的内存。
MySocket* pSocket = (MySocket*)lpParam;
。
delete pSocket;这里不是啊,不是我分配的内存没释放,提示的是f盘,可是我只有C,D盘,是系统自己分配的内存。
你并没有将它传递给你的线程函数~
MySocket* pSocket = (MySocket*)lpParam;
。
delete pSocket;这里不是啊,不是我分配的内存没释放,提示的是f盘,可是我只有C,D盘,是系统自己分配的内存。
你并没有将它传递给你的线程函数~
额,代码被我弄替代方案的时候改错了
应该是thread_handle = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)thread_main,
mySocket,0,&thread_tid);
我说了,我分配的都释放了,用VLD提示没有内存泄露,但是vs2010本身提示有,觉得好奇,跟踪了一下,结果发现这个地址好奇怪