[英]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.