的malloc分配這是從我的問題跟進:Array of strings with malloc on C++刪除STD數組::串與C++
正如我已實施貝d的解決方案,我已分配的內存爲std::string
的陣列malloc
然後根據與new
創建的std:string
的元件中的每一個:
void* TP = malloc(sizeof (string) * SS);
for (int i = 0; i < SS; i++) {
new (&((string*)TP)[i]) std::string(Token[i]);
}
(Token
是vector<string>
和SS
一個int
)
我知道這是不推薦的,我知道這是不優雅,我知道有 對於該陣列的創建和灌裝許多其他解決方案,但我需要做 這種方式
的我現在遇到的問題是在數組刪除。當我單獨創建各std::string
但對於一個malloc
陣列配置,在我的析構函數中我已經寫:
for (int i = 0; i < SS; i++) {
delete (&((string*) TP)[i]);
}
free(TP);
但運行時,free(TP)
指責「雙自由或腐敗」。
通過評論free(TP)
我解決了運行時問題(隱藏真正的問題),但我需要確保釋放所有內存,因爲這可能會導致類內存泄漏。
那麼,刪除TP中的每個元素足以釋放所有內存?根據我的理解,malloc
已獨立分配內存,並且需要獨立於std::string
元素,但那麼,爲什麼我會得到這個錯誤?
不要直接使用任何'new'或'malloc'或類似的東西。使用RAII設施! – 2015-01-21 01:14:08
「通過評論免費(TP)我解決了這個問題」......不,那隱藏了問題。這並不能解決問題。 – 2015-01-21 01:21:20