关于exe程序调用dll动态库释放内存的问题!!! CRT静态堆的原因从dll导出一个方法来负责释放 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我和楼主有类似的问题,我是用程序的子窗体静态调用DLL,而DLL里操作了子窗体上的控件,子窗体退出是做了变量和Timer 控件的释放,但是再次进入改子窗体时程序无响应,报无效指针 或者非法访问地址错误 但是delete之后内存没有减少(我是用windows自带的任务管理器看的)内在不会马上释放,楼主试用任务管理器观察下面代码运行时的内存占用:cout<<"alloc memory";::Sleep(1000);char *p = (char *)new char[4*1024*1024];Sleep(1000); // 为了能在任务管理器里看到变化。cout<<"free Memory"<<endl;delete[] p;在delete之后,任务管理器里面的内存占用一点没少。 谁申请,谁释放另,你描述中的“exe程序给dll传入指针”应该是传入指针的指针或指针的引用 NB, 如果你要实现这种怪异的方法, 你必须查看delete究竟是怎么实现的.这对所有人来说都是令人厌恶的.但是,相反的有一个好办法, 你可以传一个消息给dll的窗体对象.如果没有窗口,你可以返回一个dll的函数指针给exe, 该dll函数指针能够在函数体内delete.最好是发送一个消息,最保险. 求助,获取一个进程的窗口句柄并通过其他进程来设置窗口状态 调用DLL的函数时怎样传递数组参数? 在多文档中怎么得到所有的子窗口? 新手问题! 求教:QQ安全问题 谁给个把CSring对象发送到剪贴板的例子? vc中获取tcc.exe的出错信息的问题 怎样在VC++的调试版下调完发行版下的所有问题 HTML求教 VC知识库再次推出精华版光盘,欢迎大家订购! closehandle 抛出异常,高手请进! vc++用ado使用游标?
内在不会马上释放,楼主试用任务管理器观察下面代码运行时的内存占用:
cout<<"alloc memory";
::Sleep(1000);
char *p = (char *)new char[4*1024*1024];
Sleep(1000); // 为了能在任务管理器里看到变化。
cout<<"free Memory"<<endl;
delete[] p;
在delete之后,任务管理器里面的内存占用一点没少。
这对所有人来说都是令人厌恶的.但是,相反的有一个好办法, 你可以传一个消息给dll的窗体对象.
如果没有窗口,你可以返回一个dll的函数指针给exe, 该dll函数指针能够在函数体内delete.最好是发送一个消息,最保险.