我遇到了大量內存泄漏的問題。C++ CRT內存泄漏
CRT顯示泄漏在例如下面的代碼:
char *cmd = new char[128];
我該怎麼辦?
char *cmd = new char[128];
delete[] cmd;
我用上面的代碼啓動了VLD(Visual Leak Debugger)的新項目,它仍然說我漏了。
我遇到了大量內存泄漏的問題。C++ CRT內存泄漏
CRT顯示泄漏在例如下面的代碼:
char *cmd = new char[128];
我該怎麼辦?
char *cmd = new char[128];
delete[] cmd;
我用上面的代碼啓動了VLD(Visual Leak Debugger)的新項目,它仍然說我漏了。
在泄漏檢測運行後,可能會刪除您的對象。
例如,如果您有靜態對象,則必須注意刪除順序,以便在泄漏檢測發生之前將其刪除。
嘗試在函數中嵌入新/刪除並查看是否仍然報告泄漏:如果沒有,那麼問題可能確實與泄漏檢測執行後刪除的對象有關。
使用:
std::vector<char> cmd(128);
每當你需要訪問的char *緩衝區,你可以這樣做:
char* memory = &char[0]
內存是保證持續的std ::向量。 不需要刪除,因爲內存屬於對象。這使得你的代碼也是異常安全的,例如,如果在執行刪除操作之前拋出異常,你將不會泄漏內存[]
你也可以使用C++ 11中的新std :: array也如果你想分配在堆棧
當然我刪除這個引用,所有 – Hakon89
你調用'delete []'? – EdChum
@keety我認爲刪除[] * cmd –