我想知道是否有辦法刪除指針數組而不觸及內存中的指向對象。刪除指針數組而不刪除內存中的指向對象?
我正在爲幾天前實現的HashSet
寫一個約束例程,所以當哈希表已滿時,它將被另一個雙倍大小的表所取代。我使用指向一個對象的指針數組(User
)來表示哈希表,並且該數組本身在我的HashSet
類中動態聲明,因此可以在使用哈希函數將其所有內容複製到新表後將其刪除。
所以基本上我需要:
- 聲明另一個表,其大小等於原始陣列大小的兩倍。
- 將每個指向
User
對象的指針從我的原始數組複製到應用我的散列函數的新對象(它從內存中獲取User
對象,並使用表示用戶名的字符串計算索引)。 - 將原始數組中的所有指針插入新數組後,我必須釋放原始數組的分配內存,並將我的HashSet類(成員專用
userContainer
)中的指針替換爲新數組的指針(數組)。
問題是,如果我使用delete[] userContainer
爲它釋放分配的內存,它也將刪除內存中的每個對象,以便新創建的替換數組將指向內存中釋放的位置!
對不起沒有提及的編程語言。這是C++ –