作者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