为什么用c代码组成的console程序没有内存泄漏,而写成dll后就有泄漏了那

qing790202 2003-08-18 04:07:51
在线等待
...全文
15 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qing790202 2003-08-18
  • 打赏
  • 举报
回复
是这样的
我的有些变量是static
是不是不能用malloc,calloc 和free之类的了
那该怎么办
qing790202 2003-08-18
  • 打赏
  • 举报
回复
我这里边只有malloc,calloc 和free
没有混用
babynuaa 2003-08-18
  • 打赏
  • 举报
回复
既然在C里面没有泄漏,那可能是动态内存的原因吧,特别是在DLL里面,如果malloc/free或是new/delete有一个或两个是static连接的话,有可能会导致内存泄漏,这和DLL的特性有关,具体可参看《WIN核心编程》,所以可以试试如下解决:

int * g_Pointer; //定义一个全局变量

ReturnType FuncName(....)
{
...
g_Pointer = (int *)malloc(...); //在这里动态分配内存
... //使用g_Pointer
Free();
}
...
void Free()
{
free(g_Pointer);
}


或者:
不要new/delete和malloc/free一起混用。
qing790202 2003-08-18
  • 打赏
  • 举报
回复
因为代码很长的,没法贴
我也不知道哪泄露了
大侠们说说可能发生的情况吧
canoe_eyes 2003-08-18
  • 打赏
  • 举报
回复
错的原因有很多。你可以把代码贴出来,大家好帮你。
qing790202 2003-08-18
  • 打赏
  • 举报
回复
用c写的转成c++,有什么不同吗
我要怎么修改那

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧