作者ric2k1 (Ric)
看板EE_DSnP
标题Re: [问题] hw1.2.p1b(iv)
时间Sat Oct 5 22:51:17 2013
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 111.248.105.212
: 推 nianze:请问为甚麽P1a的大小是16bytes?我用sizeof(P1a)得到8bytes 10/05 17:23
: → nianze:而且string+int=8bytes好像很合理?请老师再多解释一点谢谢 10/05 17:25
哦,P1a 的 size 应该是 platform independent.
"string" 在 32 & 64 bit machine 的 size 分别为 4 & 8 Bytes,
所以在 32 bit machine 是 8 Bytes 无误,
但在 64-bit machine 由於 memory allignment 的关系,
会在 int _dummy 与 string _str 之间塞入 4 Bytes,
让总 size 变成 16 Bytes.
: 推 nianze:另外,既然arr1b_3[i]是P1a*,那derefernce後不就是P1a了吗 10/05 17:28
不确定你为什麽要 dereference...
The content of arr1b_3[i] 就直接 "cout << arr1b_3[i]" 就好了,
所以印出来的是一个 memory address 指向存 P1a 的 memory.
如果你 dereference 再印,像是 "cout << *(arr1b)3[i]",
compiler 应该会 complain "operator << (...)" not defined 吧!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.248.105.212
※ 编辑: ric2k1 来自: 111.248.105.212 (10/05 22:52)
1F:→ ric2k1:上次下课有人来问我 string 的 size,我跟他讲错了! 10/05 22:53
2F:推 nianze:我是想要确定arr1b_3[i]指向的东西的大小是多少 原本以为 10/05 22:58
3F:→ nianze:变成16bytes 和题目要求无关 谢谢老师解答! 10/05 22:59