精華區beta EE_DSnP 關於我們 聯絡資訊
※ 引述《ric2k1 (Ric)》之銘言: : ※ 引述《EEmuse2 (忘了密碼)》之銘言: : : 應該說 new v.s. new[]都是傳入 alloc(t),allocArray(t),但我不太瞭解 : : alloc(t)是不是說系統自動要求要一個物件大小t的空間,而allocArray(t) : : 傳入的東西又是什麼?是指幾個物件?? : 對 function "operator new[] (size_t t)", 系統會自動計算出所需記憶體的 #Bytes ~~~~ ~~~~ 請問一下為什麼是系統自動計算呢? 這次作業不就是要全權自己分配記憶體嗎? 所以不是要自己算? : That is, t = sizeof(T) * n + 4, where T is the class to new, and n is the : size of array (i.e. new T[n]) : : 有點不知道allocArray和freeArray怎樣動手... : 系統在執行完 new[] 之後, 會將 n 存在 allocated memory 的最前面 4 個 Byte (i.e. ~~ ~~~~~~~~~~~~~~~~~ 這個n不是要自己存進去嗎? 因為不是要自己分配記憶體的用途? : 大小 = sizeof(size_t)). : 至於如何看到 n, 此乃本作業的重點之ㄧ, 你可以參考 post #240. n不是要自己偷存進去前4byte就好? 謝謝^^" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.218.0.112
ric2k1:I will suggest you to play around with newOp.cpp... 12/11 12:06
ric2k1:n 是系統自己幫你存的, 而且是在 new[]() 結束之後 12/11 12:06
ric2k1:所以即使你在 new []() 存了 n, 系統仍然會再存一次 12/11 12:07
ric2k1:這次作業是要你們 "根據系統傳給你們的 t, 來自分配記憶體" 12/11 12:08
ric2k1:Once again, new [] (t) 裡面的 t 也不是你們可以控制的 12/11 12:10