看板 C_and_CPP 關於我們 聯絡資訊
http://rafb.net/p/fzOZWw61.html 這是C++ primer plus當中的一題練習題 我在set()當中使用new動態配置記憶體之後 應該要在main的最後把先前配置的記憶體delete掉 但我只要加上 delete [] pt; 就沒辦法正常結束執行 請問版上的高手們是我的語法用錯了嗎? 謝謝! ------------------------------ 這是題目的限制..剛忘記跟程式碼PO在一起 set(beany, testing); //first argument is a reference, //allocates space to hold copy of testing, //sets str member of beany to point to the new block, //copies testing to the new block, //and sets ct member of beany -- 我以為遠方 會有新的風景 卻在每一個異地 流浪回望著記憶 "For the way I live" by Tizzy Bac -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.194.100.216
xam:#38 ps = s2; 03/19 00:15
zptdaniel:可以請樓上告訴我要怎麼改嗎@@? 我不知道該怎麼做||| 03/19 00:20
akasan:s1.str[n+1]='\0'; 03/19 00:21
zptdaniel:改成 *ps = *s2 嗎? 03/19 00:21
akasan:陣列a[n] 能用的範圍是a[0~n-1] 03/19 00:21
akasan:那邊用用strcpy 03/19 00:22
QQ29:就1F所說的 你ps=s2 已經 mem leak了 已經找不回原先ps new的 03/19 00:23
QQ29:而你現在ps指到的是testin[] 是一個靜態陣列 不能delete阿 03/19 00:24
saxontai:s1.str = new char[strlen(s2)]; 03/19 00:31
saxontai:strcpy(s1.str, s2); 03/19 00:32
saxontai:或 sprintf(str.s1, "%s", s2); 03/19 00:33
※ 編輯: zptdaniel 來自: 123.194.100.216 (03/19 00:37)
zptdaniel:原來可以這樣寫啊@@ 懂了 謝謝各位^^ 03/19 00:38
saxontai:s1.ct = strlen(s2); 03/19 00:39
saxontai:s1.str = new char[s1.ct * sizeof(char)]; 03/19 00:40
zptdaniel:請問,new char[s1.ct]跟new char[s1.ct * sizeof(char)] 03/19 00:54
zptdaniel:兩個都可以執行,但是差別在於哪裡呢? 03/19 00:54
zptdaniel:這好像是個很蠢的問題@@ 03/19 00:55
zptdaniel:是後者配置的記憶體空間較大? 03/19 00:55
saxontai:呃,我搞笑,用到 C 的習慣了 XD new char[s1.ct]; 就好 03/19 00:58
zptdaniel:喔~了解! 謝謝saxontai! 03/19 01:03