0

解決済み: いくつかの実験の後、それは可能であるように思われます。

オーバーロードされたメモリ関数 (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;

それは問題を解決しますか?

4

1 に答える 1