作者sunneo (艾斯寇德)
看板C_and_CPP
标题Re: [问题] DLL问题
时间Sat Apr 11 00:41:36 2009
※ 引述《photon3108 (John)》之铭言:
: ※ 引述《pakker (找寻蔚蓝天空)》之铭言:
: : class A
: : {
: : private:
: : int money;
: : public:
: : int getmoney();
: : }
: : DLLEXPORT A* getClassA()
: : {
: : return new A;
: : }
: : DLLEXPORT void Free(void *memory)
: : {
: : delete memory;
: : }
: : DLL 内 new/malloc 的东西, 只能从 DLL 中去 delete/free.
: : (也有例外, 看 link 的 library)
: : 详情请洽 MSDN, 或者看一看相关的 source code
: 为什麽 "DLL 内 new/malloc 的东西, 只能从 DLL 中去 delete/free."?
: 我试了一下在 DLL 中 malloc,在使用 DLL 的程式中,得到这个 memory
: block ,再 free,好像没有问题,会潜在什麽问题吗?
: 文中提到的例外,又是什麽呢?
: 谢谢。
我发表一下浅见@@
有错请指正
这可能跟malloc/free版本有关
假使今天dll使用a版的malloc/free,而外部程式使用b版的
就可能会因为Heap资讯及处理方式不一致使得这个操作发生错误
所以稳定的做法是以HeapFree来释放
假使该配置记忆体的变数是一个全域变数且修饰为共享的话
则有可能会因为外部的释放使得其他使用该配置区块的程式不正常运作。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.39.201.42