Re: [問題] 記憶體問題

看板C_and_CPP (C/C++)作者 ( )時間16年前 (2009/03/21 15:16), 編輯推噓3(303)
留言6則, 3人參與, 最新討論串1/2 (看更多)
可以請教一下 這是為什麼嗎? 我用Devc++跑 值還是正確 register都是4bytes 有人推文說local variable會做stack 所以這是因為compiler在這時候知道做stack時 sb(store byte)要改成用sw(4bytes) 故不會出錯? 我一直以為會truncate.... ※ 引述《yshihyu (yshihyu)》之銘言: : windows 記憶體管理機制是不是沒 linux 好? : 明明程式誤用不合法記憶體區塊,還是可以跑沒有出現警告 , 但linux 可以偵測到 : #include <stdio.h> : int main() : { : char a = 10; : int *p = (int*)&a; : *p = 342234; : return 0; : } : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.138.66.163

03/21 18:47, , 1F
這跟 local variable 沒關係 @@
03/21 18:47, 1F

03/21 18:48, , 2F
這應該是OS 記憶體機制問題..
03/21 18:48, 2F

03/21 23:44, , 3F
其實就算寫入也不會truncate
03/21 23:44, 3F

03/21 23:45, , 4F
你頂多是寫到下面的int*p 的記憶體內容 也就是改到了
03/21 23:45, 4F

03/21 23:45, , 5F
p指的位址 除非你再嘗試deref p 可能會到不一樣的位置
03/21 23:45, 5F

03/22 01:11, , 6F
這個case如果有做記憶體對齊, 會不會恰好沒事啊??
03/22 01:11, 6F
文章代碼(AID): #19n9HHSR (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #19n9HHSR (C_and_CPP)