在dll中分配内存

savage54321 2004-04-20 11:02:33
刚才看到一个帖子。很confused所以拿来向高手请教。
如在dll中有
void __declspec( dllexport ) int* Fun(int size)
{
return (int *) malloc(size)
}

在app中调用如下
int * p=Fun(1024);
//问题是什么时候释放指针。在dll中还是在app中?
...全文
28 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
savage54321 2004-04-20
  • 打赏
  • 举报
回复
呵呵,没看到houstond(东方浩气)同学的帖子,要不我就不问了
savage54321 2004-04-20
  • 打赏
  • 举报
回复
为什么在dll中的分配的指针一定要在dll中delete掉呢?而不是在app delete掉
savage54321 2004-04-20
  • 打赏
  • 举报
回复
为什么在dll中的分配的指针一定要在dll中delete掉呢?而不是在appdelete掉
houstond 2004-04-20
  • 打赏
  • 举报
回复
再补充一句:
这是M$的OS调用DLL的机制,其他平台不存在这个问题
houstond 2004-04-20
  • 打赏
  • 举报
回复
DLL有自己的HEAP,在一个HEAP动态分配的内存,不能在另外的HEAP中释放
houstond 2004-04-20
  • 打赏
  • 举报
回复
路漫漫 同学说的很正确,你自己去试验巩固加深记忆吧
drgnmvpn 2004-04-20
  • 打赏
  • 举报
回复
释放的方法就这一个啊.还有些底层分配、释放的API可以使用。但要用它们做什么呢?
savage54321 2004-04-20
  • 打赏
  • 举报
回复
哦!我刚才说错了。有一个malloc就应该有个free就释放一次。没问题。还有什么其他的方法吗?
drgnmvpn 2004-04-20
  • 打赏
  • 举报
回复
不对,是一次.为什么要释放两次.难道你是说要释放指针本身?
savage54321 2004-04-20
  • 打赏
  • 举报
回复
我试试吧!
savage54321 2004-04-20
  • 打赏
  • 举报
回复
这个我知道,但是我觉得要释放两次吧。一次是dll的指针一次是app中的指针
drgnmvpn 2004-04-20
  • 打赏
  • 举报
回复
在函数中传进参数,如上例就是p
savage54321 2004-04-20
  • 打赏
  • 举报
回复
呵呵,问题是你在dll中释放谁?
drgnmvpn 2004-04-20
  • 打赏
  • 举报
回复
只能在DLL中写个释放内存的函数,再在APP中调用它.否则就会出错

15,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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