作者takua624 (TAKUA)
看板EE_DSnP
标题[问题] 要怎麽知道array size?
时间Tue Nov 15 16:08:36 2011
如果是
int a[5];
则sizeof(a) = 20 =4*sizeof(int)
但在memMgr.h的freeArr里面,传入的p应该是一个T的array
但sizeof(p) = 4 = sizeof(T*)
看来这招不能用。请问还有什麽方法可以知道array的大小呢?
--
春
苑树雪菜萌苗,
雀儿喜上夏枝梢;
蓝眼望尽
黄泉路,只盼俪人一
美笑。
长巾初解投送抱,金
珠丽叶贺新好;
神代仙眷且羡嫉,长伴相随誓到老。
静马千华留秋晚,冬风不止
三乡道;
红枝立约携手情,今此空余泣嚎啕。
姬宫千歌音悠悠,
樱井奏乐声袅袅;奈何天令伊人变,
飞离斯爱离斯去。
结城AIRA→ 悲恸独泣无人应,
白昼梦尽皆空语。
←美乡あき
Kalafina→ 红月旋响戚
音乐,黯然步上
镇魂旅。
←飞 兰
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.57.147.96
1F:推 inferior9527:同样问题... 11/15 16:23
2F:推 wmin0:去拿系统偷放的那个值 11/15 16:36
3F:推 victoret:我想请问的是那个值占多少记忆体? 11/15 21:36
4F:→ victoret:或者说,他是不是 size_t 的形式存放? 11/15 21:37
5F:→ victoret:很好奇这个值在 32 bit 和 64 bit 里面占的空间是否有差 11/15 21:37
6F:→ e124553423:好像是这样没错吧? 11/15 22:49
7F:推 TommyKSHS:会以 size_t 存放喔 11/16 00:17
8F:推 Komemushisp:问一下 *(size_t*)(p-sizeof(size_t)) 这样写对吗?? 11/16 00:29
9F:→ TommyKSHS:传进 freeArr (前身:传进 delete) 里的 array pointer 11/16 00:39
10F:→ TommyKSHS:其实就已经是指向存那个值的位置了,所以不用减後面那坨 11/16 00:40
11F:推 Komemushisp:噢噢 谢谢!! 11/16 00:46
12F:推 victoret:感谢!!! 11/16 01:01
结果问的人自己还是看不懂推文是什麽意思...
※ 编辑: takua624 来自: 140.112.25.107 (11/16 07:46)
好,现在勉强懂了,总之经过谜一般的dereference,可以得到*p就是array size
但是,把他加到例如size=2的list好了,如果里面原本的_first指着一个0x0000
那麽...根据这个list的使用方式,我们会把_first指向p,而*p = 0x0000
这样...下次再delete[]一次p的时候,要去读他的array size就会变成
0x0000强制转译成size_t之後的结果,然後就______了
这样的话要怎麽应付重复delete[]的问题呢?
※ 编辑: takua624 来自: 140.112.4.195 (11/16 15:19)
※ 编辑: takua624 来自: 140.112.4.195 (11/16 15:20)
13F:推 shryuhuai:你把不同的东西搞混了,_first和delete没有关系啊 11/16 20:04