我在WIN32 DLL中用CreateThread()函数创建了一个线程,在线程中要使用一个64kbytes的堆空间,通过传给线程。函数线程能够正确的运行,但是当退出调用线程的程序后,出现了内存泄露的情况。 在线程中,我已经用delete函数释放了分配的64kbyt...
全文
回复(10) 2004-06-07 20:35 来自版块 - c/c++入门(VC,KeilC使用)
表情
wei_ziyong谢谢各位!我再看看书和资料(2004-06-09 12:26)
Leonsoft建议你去看看 Jeffer Richter那本经典名著 programming AP for windows 2000(2004-06-09 11:05)
walkonthesky也不完全是 关键看你的调用约定 总共三种调用约定,你自己看看资料 我说过 线程同步可以解决你的问题 你自己试一下 我就不分析你的代码了(2004-06-09 08:55)
wei_ziyong我的主要代码如下,你们帮我看看有什么不足,和错误,需要改正的! 谢谢! 在动态连接库中, 线程函数的定义如下: typedef struct DataInfo{ ULONG dwDSPAddr; PULONG ReturnAddr; ULONG ...(2004-06-08 17:03)
wei_ziyong 你的意思是不是,只要是传给DLL引出函数的指针,就只能够在只能在调用该函数的主程序中释放的指针? 那么我这里还有个问题,我要写的那个线程要不停的调用driver中的函数,从硬件设备读数据。那个线程能够不停的从设备读数据,要把数据不停的存放到应用程序传给线程的那个缓冲...(2004-06-08 17:03)
walkonthesky线程同步,WOWOCOCK的方案是可行的方案(2004-06-08 13:15)
walkontheskyDLL导出函数尊从__declspec调用约定,按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于传送参数的内存栈是由调用者来维护的。所以,你不能在DLL函数中释放内存,只能在调用该函数的主程序中释放的内存,即: 谁分配,谁释放; 谁污染,谁治理。(2004-06-08 13:10)
wei_ziyong 在要调用线程的主函数中分配64kBytes内存,然后,在把内存的地址传给在dll中的线程,当终止dll中线程的运行时,由dll中被调用的线程释放内存。 我使用了CC++运行期库函数_beginthreadex还时遇到了上述的问题阿。我发现在主线程中用malloc...(2004-06-08 12:55)
wowocock在主线程中用GETEXITCODETHREAD来监控线程,当其退出后,在主线程中释放内存.(2004-06-08 08:55)
snowStart你说的不大清楚,内存什么时候,在哪申请和释放 建议: 一般使用C\C++运行期库函数_beginthreadex可以避免这种问题, 或者你用线程同步,在适当的时候释放内存,(2004-06-08 08:29)

返回顶部