簡體   English   中英

分配字符串時,char * new和delete []錯誤

[英]char* new and delete [] error when a string is assigned

我需要一個C ++復習。 為什么這會給出內存異常?

pear = new char[1024];
pear = "happy go lucky";
delete [] pear; // exception
pear = new char[1024];

從heap和pear指向1024字符的內存分配到它的開頭。

pear = "happy go lucky";

pear現在指向駐留在只讀段中的字符串文字,並且先前分配的內存被泄露。

delete [] pear;

您嘗試釋放只讀字符串,這是一種未定義的行為,表現為運行時異常。

pear =“快樂幸運”;

將替換 new char[]分配的指針。 所以現在你的delete[] pear試圖釋放靜態分配的字符串。

那很糟。 您只能delete使用new分配的內容。 而且由於你覆蓋(並丟失)了那個指針,你無法delete它。

你正在做的是將pear分配給堆上已分配的字符數組,然后重新分配它以指向靜態位置的字符串。 如果你試圖刪除它會出錯,因為你不應該刪除那個靜態位置的東西。

暫無
暫無

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

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