作者photonzero (邪心魔佛)
看板EE_DSnP
標題[問題] hw4:請問push pop freeArr等問題
時間Sun Nov 20 19:04:57 2011
就是傳進push,free等函數的指標
這個指標在被傳至push時,是針對這個指標所指到的元件作修改
還是在這個指標所指到的記憶體的前SIZE_T byte作修改
那freearr要抓陣列大小時是在P指標在往前SIZE_T還是直接從前頭找
會有這疑問是因為爬文爬到一篇說P好像之前有修改
剛想到一點
因為傳入freearr的T*指標p也會傳入push
那老師上課時說的修改是改存arr大小的地方還是p所指向的物件內?
此外delete 物件T是在push內作,還是在其他地方作
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.37.228
※ 編輯: photonzero 來自: 61.228.37.228 (11/20 19:10)
1F:推 ric2k1:可以參考講義中的newOp.cpp (pp30-31) 那個例子,freeArr時 11/20 22:13
2F:→ ric2k1:傳到 memMgr 的是 SIZE_T Bytes 前的記憶體位置,不是array 11/20 22:14
3F:→ ric2k1:的開頭。 11/20 22:14
4F:→ photonzero:意思是只要是new/del->free/alloc->getmem/push/pop 11/20 22:31
5F:→ photonzero:這串下來的都是SIZE_T Bytes 前的記憶體位置囉 11/20 22:32
6F:→ photonzero:也不需要在+/-值直接從指標p開頭弄就行了嗎 11/20 22:34
7F:推 shryuhuai:從new裡面回傳出來的指標會自動加size_t bytes 11/20 23:20
8F:→ shryuhuai:如果retur p 會自動變成 return p+size_t 11/20 23:22
9F:推 shryuhuai:array的大小就存在p~p+size_t-1 11/20 23:25
10F:→ shryuhuai:delete[] p裡的p進到函數裡就會自動變成p-size_t bytes 11/20 23:27
11F:→ photonzero:請問樓上return p是從new回傳的吧,若是在new內部的函數 11/20 23:28
12F:→ photonzero:傳來傳去也會改變嗎 11/20 23:28
13F:推 shryuhuai:不會,簡單說就是delete[] 跟new 傳進傳出時會自動加減 11/21 00:55
14F:→ photonzero:感謝教授與樓上回答 11/21 01:07