所以我們下面的代碼,這說明了一個「指針陣列」(我認爲)別的東西數組和
main() {
int *array[3];
int x = 10, y = 20, z = 30;
array[0] = &x;
array[1] = &y;
array[2] = &z;
return 0;
}
現在,讓我們說的不是int
S,他們是一個類型的您創建的對象類。
所以我想從這個數組中刪除成員(即通過刪除關鍵字的方式來調用它的析構函數,並已物體破壞,但具有指針仍然很好。)
如果我的懷疑是正確的,這是不可能的,我唯一的選擇是將數組的內容複製到一個新的數組(除了我想刪除的數組之外),然後刪除前一個數組(作爲一個整體與所有它的元素),而我分配新的指針array
我將不勝感激,如果有人可以證實或糾正我的懷疑,特別是因爲名稱「指針數組」是SO誤導。謝謝。
這樣做,你不應該需要'刪除',它會是UB嘗試。 – chris
不,刪除主「數組」只會刪除數組,指針會保持不變。這實際上是在大多數情況下導致內存泄漏的人,他們忘記了用指針數組來遍歷並刪除每個元素中的內存。 (除非你使用「delete []數組」,這也會刪除內容) – u8sand
你想要做什麼'std :: vector'和'std :: vector :: erase'將不起作用? – chris