delete []arr; //這行指令編譯會過
//但執行會有錯誤訊息
雖然說不delete跑起來好像也沒事
但是心裡還是毛毛的 而且書上也沒有
相關的說明 請大家幫我解惑吧
ps我是用vc6編譯的
--
[m [1;35m※ 來源:‧蛋捲廣場 bbs.tku.edu.tw‧[FROM: 61.224.9.46] [m
剛好你們討論的問題就是 C/C++ 的致命傷,指標亂指、錯誤或忘記的 delete
所以後來的語言如 Java、Perl... 等設計就只有 reference 沒有指標
通通往左移一格,您可以考慮這樣做:
原來是
int *arr=new int [m];
arr++; //元素左移
num = arr[3]; // 取裡面的內容
delete []arr; //這行指令編譯會過
改成
int *arr = new int [m];
int *relative_arr = arr + 1;
num = relative_arr[3]; // 取相對位置,就好像元素都左移過一格了
delete []arr; // *arr 根本沒被動過,所以就不會有 memory leak
John Lin
嗯~~
不錯用喔
學到一招摟.....:)
可是要取原來的第一個要怎麼取呀
--
[m [1;34m※ 來源:‧蛋捲廣場 bbs.tku.edu.tw‧[FROM: 140.111.81.150] [m
arr[0]不就是了?
位址減一?
--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>
如果用參考來做的話
那記憶體的位置不就被delete後
有可能會被其他使用而改變嗎?
我覺得不是很保險耶
我的想法有沒有錯呢..
並且指到矩陣以外的地方不是不太好嗎..@_@"
--
[m [1;32m※ 來源:‧蛋捲廣場 bbs.tku.edu.tw‧[FROM: 140.111.81.150] [m