簡體   English   中英

我使用構造函數(使用 memory dinamic char *t = new char [10] t ="test123456";)並在析構函數中刪除 [] t; 錯誤

[英]i have get error heap error using constructor ( use memory dinamic char *t = new char [10] t ="test123456";) and in distructor delete [] t; error

錯誤堆內存,內存損壞,#181 就是不明白。 有一段時間嘗試使用 copy ctor 並且它出現相同的錯誤。 你能解釋一下嗎

Test::Test() {
    desc = new char[4];`
    desc = "Try";
} 

Test::~Test() {delete [] desc; }

它失敗是因為您不了解 C++ 的基礎知識。

desc = new char[4]; desc = "Try";

這行代碼首先為 4 個字符分配內存,返回指向已分配內存的指針並將其存儲在desc 然而,下一刻你完全失去了這個指針,現在將“Try”(一個字符串文字)分配給desc 現在您的desc指向“嘗試”。

這里

Test::~Test() {delete [] desc; }

您刪除指向 "Try" 的指針 - 就像您會delete "Try" 但是您不能刪除字符串文字,因為您沒有創建它。

因此崩潰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM