作者goosey ( )
看板C_and_CPP
標題Re: [問題] 記憶體問題
時間Sat Mar 21 15:16:32 2009
可以請教一下 這是為什麼嗎?
我用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
1F:推 yshihyu:這跟 local variable 沒關係 @@ 03/21 18:47
2F:→ yshihyu:這應該是OS 記憶體機制問題.. 03/21 18:48
3F:推 sunneo:其實就算寫入也不會truncate 03/21 23:44
4F:→ sunneo:你頂多是寫到下面的int*p 的記憶體內容 也就是改到了 03/21 23:45
5F:→ sunneo:p指的位址 除非你再嘗試deref p 可能會到不一樣的位置 03/21 23:45
6F:推 VictorTom:這個case如果有做記憶體對齊, 會不會恰好沒事啊?? 03/22 01:11