2017-01-01 31 views
-7
delete[] File; 

printf("[%s][%d] Loaded successfully!\n", FilesList.c_str(), FileSize); 

return File; 

//delete[] File ? 
+8

你不能。糟糕的設計。發佈您正在嘗試解決的實際問題。 – DeiDei

+3

什麼?你是否返回一個指向釋放內存的指針? – UnholySheep

+2

'delete []'?稱爲「文件」的東西可能不是一個數組。 – Unimportant

回答

2

假設您使用「new」運算符創建了「File」,在返回它之前不想刪除它。這將使調用者保持一個指向已刪除對象的指針。

我認爲你的問題確實是這樣的,我如何確保我在函數中分配的東西最終被釋放?

可能你想要的是C++的std::unique_ptr。使用此功能,您可以在函數中分配一個堆對象,並將指向對象的指針以及對象的所有權返回給調用者。當調用者完成它時,unique_ptr將釋放與對象關聯的內存。

相關問題