可能重複的數組:
delete[] supplied a modified new-ed pointer. Undefined Behaviour?刪除[]字符
比方說,我已經使用分配字符new char[number]
了一把。
是否可以刪除只有幾個結束字符(類似delete[] (charArray + 4);
,這應該會取消分配除前四個字符以外的所有字符)?
,我讀了一些實現new[]
存儲對象的數量對象數組,這樣delete[]
知道多少個對象解除分配,因此它可能是不安全的做,我問什麼...
謝謝。
編輯:
手動刪除使用單獨delete
語句以安全的方式做我問什麼不需要的終字節?
你能解釋一下'std :: vector'的方式嗎? – slartibartfast
@myrkos它分配空間來存儲* n *個元素,但它可能會將其大小報告爲* <= n *。這是爲了更有效地調整大小。 – Maxpm
@myrkos:它用':: operator new'分配「原始」空間,然後使用放置'new'將原始空間轉換爲對象。當它需要銷燬對象時(例如,當'vector'超出範圍或者'erase'元素時),它直接調用dtor來做到這一點。 –