刚才看到一个帖子。很confused所以拿来向高手请教。
如在dll中有
void __declspec( dllexport ) int* Fun(int size)
{
        return (int *) malloc(size)
}在app中调用如下
  int * p=Fun(1024);
//问题是什么时候释放指针。在dll中还是在app中?

解决方案 »

  1.   

    只能在DLL中写个释放内存的函数,再在APP中调用它.否则就会出错
      

  2.   

    呵呵,问题是你在dll中释放谁?
      

  3.   

    这个我知道,但是我觉得要释放两次吧。一次是dll的指针一次是app中的指针
      

  4.   

    哦!我刚才说错了。有一个malloc就应该有个free就释放一次。没问题。还有什么其他的方法吗?
      

  5.   

    释放的方法就这一个啊.还有些底层分配、释放的API可以使用。但要用它们做什么呢?
      

  6.   

    DLL有自己的HEAP,在一个HEAP动态分配的内存,不能在另外的HEAP中释放
      

  7.   

    再补充一句:
    这是M$的OS调用DLL的机制,其他平台不存在这个问题
      

  8.   

    为什么在dll中的分配的指针一定要在dll中delete掉呢?而不是在appdelete掉
      

  9.   

    为什么在dll中的分配的指针一定要在dll中delete掉呢?而不是在app delete掉
      

  10.   

    呵呵,没看到houstond(东方浩气)同学的帖子,要不我就不问了