在我的項目中,我有一個抽象基類「Base」。我想跟蹤所有從「Base」派生的對象的動態分配/釋放。爲此,我重寫了「Base」中的新/刪除操作符。在構建對象時獲取大多數派生類型
在重寫的new運算符中成功分配內存之後,我想通知用於跟蹤內存的分配已發生的對象,分配的派生類型和它的大小。大小不是問題(因爲它直接傳遞給「Base」的新運算符),但獲得最多派生類型是個問題。
我傾向於認爲這是不可能的方式我試圖做到這一點。由於對象的更多派生部分尚未構建,因此無法知道它們是什麼。然而,「Base」類重載新操作符知道最終產品的大小 - 所以有可能知道關於它的其他事情嗎?
對於背景:
void* Base::operator new(size_t size)
{
void* storage = malloc(size);
if (storage == NULL)
throw std::bad_alloc();
// Notify MemoryTracker an allocation has occurred
// MemoryTracker::Instance().Allocate(type, size);
return storage;
}
+1我不相信這是可能的使用operator new,但我不能證明它。我很好奇,看看我是否會再次被證明是錯誤的C++語言功能。 :-) – templatetypedef