首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ delete[] 釋放二維陣列記憶體失效的正確寫法

     編輯:程式設計綜合問答

錯誤代碼

delete[] senderbuffer[i]; // 拼寫錯誤:senderbuffer vs sendbuffer
delete[] sendbuffer;

問題分析

  1. 變數名拼寫不一致:配置時用 sendbuffer,釋放時寫成 senderbuffer,導致釋放失敗或釋放錯誤位址。
  2. 二維陣列釋放順序:必須先逐行 delete[] sendbuffer[i],再 delete[] sendbuffer。

正確範例

// 假設配置
char** sendbuffer = new char*[rows];
for (int i = 0; i < rows; ++i)
    sendbuffer[i] = new char[cols];

// 釋放
for (int i = 0; i < rows; ++i)
    delete[] sendbuffer[i]; // 逐行釋放
delete[] sendbuffer;        // 釋放指標陣列

現代 C++ 建議

改用 std::vector<std::vector<char>> 或 std::unique_ptr 自動管理記憶體,避免手動 new/delete 錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved