全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:948
推到 Plurk!
推到 Facebook!

關於此語法 delete [] abc 是何意?

答題得分者是:brook
seeing
初階會員


發表:49
回覆:131
積分:41
註冊:2002-11-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-28 11:03:26 IP:140.134.xxx.xxx 未訂閱
請問一下: delete [] abc ,代表什麼意思呢?小弟我才疏學淺,沒看過這種語法。謝謝
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-28 11:17:13 IP:218.160.xxx.xxx 未訂閱
死記的東西 int *abc = new int; delete abc; abc = new int[10]; //陣列 delete []abc;
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-28 13:27:51 IP:210.66.xxx.xxx 未訂閱
插個花一下~    delete [] abc 你也可以照字面看, 先delete abc所指到的空間(就是那個陣列[]), 再來delete abc     國泰平安
zilch
中階會員


發表:5
回覆:87
積分:78
註冊:2002-09-24

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-28 16:46:33 IP:61.224.xxx.xxx 未訂閱
依據 C 的爸爸 Bjarne Stroustrup 的 "The C Programming Language, 2nd ed." 一書的 "Reference Manual" 中, Section r5.3.3 所述: The lifetime of an object created by new is not restricted to the ^^^ scope in which it is created. Section r.5.3.4: The form delete [] cast-expression ^^^^^^^^^ is used to delete arrays. ...... The effect of deleting an array with the plain delete syntax is ^^^^^^ undefined, as is deleting an individual object with the delete[] syntax. ^^^^^^^^
seeing
初階會員


發表:49
回覆:131
積分:41
註冊:2002-11-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-28 16:49:29 IP:140.134.xxx.xxx 未訂閱
可是如果照brook所寫的原始碼來看,是先delete abc,再delete陣列 謝謝
brook
資深會員


發表:57
回覆:323
積分:371
註冊:2002-07-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-28 17:16:27 IP:218.160.xxx.xxx 未訂閱
引言: 可是如果照brook所寫的原始碼來看,是先delete abc,再delete陣列 謝謝 < face="Verdana, Arial, Helvetica"> 被你誤會去了, new 和 delete 是一組的,new一個陣列,用完就必須delete[]一個陣列. 就如借100就必須還100 int *a = new int; delete a; 借10個100就必須還10個100 int *b = new int[10]; //陣列 delete []b; 各自獨立,把變數名稱換了,不知有沒有了解.
seeing
初階會員


發表:49
回覆:131
積分:41
註冊:2002-11-07

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-08-28 21:07:04 IP:140.134.xxx.xxx 未訂閱
引言: 被你誤會去了, new 和 delete 是一組的,new一個陣列,用完就必須delete[]一個陣列. 就如借100就必須還100 int *a = new int; delete a; 借10個100就必須還10個100 int *b = new int[10]; //陣列 delete []b; 各自獨立,把變數名稱換了,不知有沒有了解.
這個我瞭了,但不知道能不能直接寫成 delete b; 因為b指的是一個陣列,所以不知行嗎?
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-08-28 22:35:09 IP:61.224.xxx.xxx 未訂閱
是可以這樣寫沒錯 delete b,    但是它只會呼叫b的解構式而已,    而b所指的陣列[]中每個元素並沒有釋放,    記的有本書上好像有提到,如果你的物件中沒有寫陣列[]的解構式,    其實只要delete b 就可以...印象中    那本書在我放在公司,明日待我前去查明一番~ 國泰平安
seeing
初階會員


發表:49
回覆:131
積分:41
註冊:2002-11-07

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-09-08 21:51:34 IP:61.30.xxx.xxx 未訂閱
ㄣ~謝謝你!!
系統時間:2024-06-16 15:39:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!