PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
Grad-ProbAsk
计组 98台大电机
楼主:
o5739201
(车贷学贷付二贷)
2018-12-12 17:02:13
https://i.imgur.com/s2nI9eU.jpg
怎么想都感觉怪怪的 为什么会是用减的 ?
是因为用malloc配置的空间是stack吗?
作者:
eggy1018
(羅密æ與豬éŽå¤œ)
2018-12-12 18:08:00
Malloc Pointer放在Stack , pointer 指向的data 放在heap如果有错还请大大指教
作者:
alan23273850
2018-12-12 20:35:00
地址由上往下递增,stack往下长,heap往上长,这样你就懂了,倒是为什么 64-bit CPU 的整数是 8 bytes这我还不懂,我以为整数最长就只到 32 bits。
作者:
eggy1018
(羅密æ與豬éŽå¤œ)
2018-12-12 22:25:00
64bit=8byte 因为byte address, 所以是+-8
作者:
Dora5566
(咩休干某)
2018-12-12 22:55:00
蛋大应该是对的
作者:
alan23273850
2018-12-12 23:38:00
我刚刚在WSL上印sizeof(int)明明是4,到底为什么是8是64bit的电脑喔大家要不要把自己sizeof(int)的结果截图PO上来参考
作者:
b0920075
(Void)
2018-12-12 23:44:00
int在32 64下都是4byte啊但是在64下地址所占空间是8byte,跟int所占空间根本无关这题应该只是考stack生长方向和 64bit下地址所占空间而已
楼主:
o5739201
(车贷学贷付二贷)
2018-12-12 23:53:00
谢谢各位大大 懂了
作者:
alan23273850
2018-12-13 00:33:00
我还不懂,
https://i.imgur.com/9YkO4kh.jpg
明明就是 +8,虽然我承认有被 &p 骗到而且p和q都是区域变量放在stack,stack往下长,地址愈往下愈大,这样不是本来就是 +8 吗我在不被 &p 骗到的情况下还是答错
作者:
eggy1018
(羅密æ與豬éŽå¤œ)
2018-12-13 00:58:00
https://imgur.com/0USdfWf
https://imgur.com/OF7yZRh
抱歉我也不是很理解为什么你的address会如此,还有待高手回答了
作者:
alan23273850
2018-12-13 01:18:00
这题真是太好玩了,那蛋大对+8还是-8有理论解释吗?
作者:
eggy1018
(羅密æ與豬éŽå¤œ)
2018-12-13 01:45:00
抱歉我的+-8的意思只是移动8没特别的意思,造成误会的话很对不起
作者:
DLHZ
( )
2018-12-13 02:00:00
几byte不是看compiler?
作者:
aggress5566
(哩贺)
2018-12-13 03:47:00
sizeof(int)是4byte sizeof(size_t)才会跑出8所以pointer type应该是size_t才是
作者:
Dora5566
(咩休干某)
2018-12-13 07:06:00
是说64bits下存一个int变量花8byte里面却只有4byte的资料,是这样吗
作者:
alan23273850
2018-12-13 08:14:00
DLHZ: 看平台定义常数Dora: 被误导了,这题问的是指标大小,非普通变量大小,请看清楚,所以我才说这题鉴别度低
作者:
Dora5566
(咩休干某)
2018-12-13 08:36:00
我确实是想问int在64bit时怎么放的 XDD
作者:
alan23273850
2018-12-13 08:39:00
上面有人说过了,sizeof(int) 还是 4
作者:
Dora5566
(咩休干某)
2018-12-13 08:44:00
但64bits不是用8byte对齐吗啊…我知道了
作者:
alan23273850
2018-12-13 09:31:00
剩下就是加减的问题了,这题拿去申复搞不好会送分
楼主:
o5739201
(车贷学贷付二贷)
2018-12-13 10:12:00
所以是用加的吗?stack往下长 下面不是位置比较低吗?我用dev-c去试 是用减的没错Compiler 是 TDM-GCC 4.9.2 64bit
作者:
aggress5566
(哩贺)
2018-12-13 12:43:00
这个问题就是 如果是4 byte 要怎么表示 64 bit addr
作者:
b0920075
(Void)
2018-12-13 13:30:00
stack是往下长,但local变量摆放顺序C语言规格书没有强制规定,很多compiler会为了安全考量,更改变量摆放位置
作者:
alan23273850
2018-12-13 13:32:00
这题根本就有问题,可以把解答全部贴出来吗
作者:
b0920075
(Void)
2018-12-13 13:34:00
喔,还有可能因为空间利用上的关系改变变量顺序然后stack地址越往下越小,这os应该有教吧
作者:
alan23273850
2018-12-13 14:12:00
可恶,刚查了还真的是愈下面愈小,感谢楼上,受教了这样的话如果按照默认行为的话答案应该就没错了
作者:
eggy1018
(羅密æ與豬éŽå¤œ)
2018-12-13 14:30:00
感谢b大a大的讨论 小弟受教了
楼主:
o5739201
(车贷学贷付二贷)
2018-12-13 17:12:00
答案就只有写这样哦 已经是全部了
作者: jjuussttiinn (鲁鲁丑丑宅)
2018-12-13 18:50:00
https://i.imgur.com/r9Wzkb8.jpg
我找到的解答是加的欸
作者:
alan23273850
2018-12-14 13:33:00
到底是官方还是非官方的
作者: ss850423tw
2018-12-14 23:33:00
题目是不是只是问 printf(“%x\n”,&p)这行的address和下一行的address的关系,并不是问p q指标的位置关系啊喔喔抱歉 没看清楚是说那行的 output所以应该是指标存heap然后heap往上长所以是+8没错吧
作者:
b0920075
(Void)
2018-12-15 09:12:00
&p &q都是stack地址,跟heap无关,如果要看heap地址应该要看p q
作者: ss850423tw
2018-12-15 11:56:00
喔呜了解了谢谢b大
作者:
kobebset105
(小小小妹)
2018-12-15 14:56:00
回复alan大大 妳的位址第一个是f所以是负数所以这题是减没有错喔
作者:
alan23273850
2018-12-15 16:58:00
kobe大大按照你说的,那答案位址b开头代表sign bit=1,那也是负的,这样选项就错了对ㄅ包括蛋大的截图也是,e开头也是负的,可是他却是减
作者:
aggress5566
(哩贺)
2018-12-15 20:20:00
到底在说什么 Memory Address 什么时候有负的这种
继续阅读
[理工] 线代
oblivion87
[理工] 计组 pipeline
sooge
[理工] 离散 递回
AAQ8
[理工] OS题库 deadlock问题
AAQ8
[理工] 计组 上册p.326 17题
leekevinming
[理工] 计组 single cycle和Multi-cycle
sooge
[理工] 103中央资结两题
ANANquenchan
[理工] 103 清大 计科
wei12f8158
[理工] 离散 递回
b05703
[理工] 记组 多重处理器相关问题
paralyzation
Links
booklink
Contact Us: admin [ a t ] ucptt.com