Grad-ProbAsk 板


LINE

https://i.imgur.com/s2nI9eU.jpg 怎麼想都感覺怪怪的 為什麼會是用減的 ? 是因為用malloc配置的空間是stack嗎? ----- Sent from JPTT on my iPhone --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.26.161.96
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Grad-ProbAsk/M.1544605335.A.904.html
1F:推 eggy1018: Malloc Pointer放在Stack , pointer 指向的data 放在hea 12/12 18:08
2F:→ eggy1018: p 12/12 18:08
3F:→ eggy1018: 如果有錯還請大大指教 12/12 18:08
4F:推 alan23273850: 地址由上往下遞增,stack往下長,heap往上長,這樣 12/12 20:35
5F:→ alan23273850: 你就懂了,倒是為什麼 64-bit CPU 的整數是 8 bytes 12/12 20:35
6F:→ alan23273850: 這我還不懂,我以為整數最長就只到 32 bits。 12/12 20:36
7F:推 eggy1018: 64bit=8byte 因為byte address, 所以是+-8 12/12 22:25
8F:推 Dora5566: 蛋大應該是對的 12/12 22:55
9F:推 alan23273850: 我剛剛在WSL上印sizeof(int)明明是4,到底為什麼是8 12/12 23:38
10F:→ alan23273850: 是64bit的電腦喔 12/12 23:39
11F:→ alan23273850: 大家要不要把自己sizeof(int)的結果截圖PO上來參考 12/12 23:41
12F:推 b0920075: int在32 64下都是4byte啊 12/12 23:44
13F:→ b0920075: 但是在64下地址所佔空間是8byte,跟int所佔空間根本無 12/12 23:45
14F:→ b0920075: 關 12/12 23:45
15F:推 b0920075: 這題應該只是考stack生長方向和 64bit下地址所佔空間而 12/12 23:49
16F:→ b0920075: 已 12/12 23:49
17F:→ o5739201: 謝謝各位大大 懂了 12/12 23:53
18F:推 alan23273850: 我還不懂,https://i.imgur.com/9YkO4kh.jpg 12/13 00:33
19F:→ alan23273850: 明明就是 +8,雖然我承認有被 &p 騙到 12/13 00:34
20F:→ alan23273850: 而且p和q都是區域變數放在stack,stack往下長,地址 12/13 00:36
21F:→ alan23273850: 愈往下愈大,這樣不是本來就是 +8 嗎 12/13 00:36
22F:→ alan23273850: 我在不被 &p 騙到的情況下還是答錯 12/13 00:37
23F:推 eggy1018: https://imgur.com/0USdfWf 12/13 00:58
24F:→ eggy1018: https://imgur.com/OF7yZRh 12/13 00:58
25F:→ eggy1018: 抱歉我也不是很理解為什麼你的address會如此,還有待高 12/13 00:59
26F:推 eggy1018: 手回答了 12/13 01:00
27F:→ alan23273850: 這題真是太好玩了,那蛋大對+8還是-8有理論解釋嗎? 12/13 01:18
28F:推 eggy1018: 抱歉我的+-8的意思只是移動8沒特別的意思,造成誤會的 12/13 01:45
29F:→ eggy1018: 話很對不起 12/13 01:45
30F:→ DLHZ: 幾byte不是看compiler? 12/13 02:00
31F:→ aggress5566: sizeof(int)是4byte sizeof(size_t)才會跑出8 12/13 03:47
32F:→ aggress5566: 所以pointer type應該是size_t才是 12/13 04:01
33F:推 Dora5566: 是說64bits下存一個int變數花8byte裡面卻只有4byte的資 12/13 07:06
34F:→ Dora5566: 料,是這樣嗎 12/13 07:06
35F:推 alan23273850: DLHZ: 看平台定義常數 12/13 08:14
36F:→ alan23273850: Dora: 被誤導了,這題問的是指標大小,非普通變數 12/13 08:16
37F:→ alan23273850: 大小,請看清楚,所以我才說這題鑑別度低 12/13 08:16
38F:推 Dora5566: 我確實是想問int在64bit時怎麼放的 XDD 12/13 08:36
39F:推 alan23273850: 上面有人說過了,sizeof(int) 還是 4 12/13 08:39
40F:推 Dora5566: 但64bits不是用8byte對齊嗎 12/13 08:44
41F:推 Dora5566: 啊…我知道了 12/13 08:50
42F:推 alan23273850: 剩下就是加減的問題了,這題拿去申複搞不好會送分 12/13 09:31
43F:→ o5739201: 所以是用加的嗎?stack往下長 下面不是位置比較低嗎? 12/13 10:12
44F:→ o5739201: 我用dev-c去試 是用減的沒錯 12/13 10:23
45F:→ o5739201: Compiler 是 TDM-GCC 4.9.2 64bit 12/13 10:23
46F:→ aggress5566: 這個問題就是 如果是4 byte 要怎麼表示 64 bit addr 12/13 12:43
47F:推 b0920075: stack是往下長,但local變數擺放順序C語言規格書沒有強 12/13 13:30
48F:→ b0920075: 制規定,很多compiler會為了安全考量,更改變數擺放位置 12/13 13:32
49F:推 alan23273850: 這題根本就有問題,可以把解答全部貼出來嗎 12/13 13:32
50F:推 b0920075: 喔,還有可能因為空間利用上的關係改變變數順序 12/13 13:34
51F:推 b0920075: 然後stack地址越往下越小,這os應該有教吧 12/13 13:46
52F:→ alan23273850: 可惡,剛查了還真的是愈下面愈小,感謝樓上,受教了 12/13 14:12
53F:→ alan23273850: 這樣的話如果按照預設行為的話答案應該就沒錯了 12/13 14:13
54F:推 eggy1018: 感謝b大a大的討論 小弟受教了 12/13 14:30
55F:→ o5739201: 答案就只有寫這樣哦 已經是全部了 12/13 17:12
56F:推 jjuussttiinn: https://i.imgur.com/r9Wzkb8.jpg 12/13 18:50
57F:→ jjuussttiinn: 我找到的解答是加的欸 12/13 18:51
58F:推 alan23273850: 到底是官方還是非官方的 12/14 13:33
59F:推 ss850423tw: 題目是不是只是問 printf(“%x\n”,&p)這行的addre 12/14 23:33
60F:→ ss850423tw: ss和下一行的address的關係,並不是問p q指標的位置 12/14 23:33
61F:→ ss850423tw: 關係啊 12/14 23:33
62F:推 ss850423tw: 喔喔抱歉 沒看清楚是說那行的 output所以應該是指標 12/14 23:42
63F:→ ss850423tw: 存heap然後heap往上長所以是+8沒錯吧 12/14 23:42
64F:推 b0920075: &p &q都是stack地址,跟heap無關,如果要看heap地址應 12/15 09:12
65F:→ b0920075: 該要看p q 12/15 09:12
66F:→ ss850423tw: 喔嗚了解了謝謝b大 12/15 11:56
67F:推 kobebset105: 回覆alan大大 妳的位址第一個是f所以是負數 12/15 14:56
68F:→ kobebset105: 所以這題是減沒有錯喔 12/15 14:57
69F:推 alan23273850: kobe大大按照你說的,那答案位址b開頭代表sign bit= 12/15 16:58
70F:→ alan23273850: 1,那也是負的,這樣選項就錯了對ㄅ 12/15 16:58
71F:→ alan23273850: 包括蛋大的截圖也是,e開頭也是負的,可是他卻是減 12/15 16:59
72F:噓 aggress5566: 到底在說什麼 Memory Address 什麼時候有負的這種 12/15 20:20







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP