已解决:经过几次实验,这似乎是可能的。
我想知道是否可以通过让内存管理器伴随重载内存函数(new、delete、delete[]、malloc()...)并负责任何分配/释放来避免常见的跨 dll 分配/释放问题这可以在程序的任何地方发生,从而确保一致性。
假设 a.dll 包含内存管理器,例如:
class EXPORT MemoryManager
{
static void* Allocation( size_t uiSize );
static void Deallocation( void* pAllocated );
};
inline void* operator new( size_t uiSize )
{
return MemoryManager::Allocation( uiSize );
}
inline void operator delete( void* pAllocated )
{
MemoryManager::Deallocation( pAllocated );
}
以及其他任何地方,包括 b.dll:
int* piDummy = ExternalDllFunctionCallingNew();
delete piDummy;
它会解决问题吗?