作者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