作者RiverJackson (JACK)
看板LinuxDev
標題Re: [問題] mmap memory issue
時間Sun Dec 20 11:20:57 2009
請問一個網路上例子
http://learn.akae.cn/media/ch28s08.html
0000000 68 65 6c 6c 6f 0a
h e l l o \n
0000006
為什麼做完p[0] = 0x30313233;
會變成
$ od -tx1 -tc hello
0000000 33 32 31 30 6f 0a
3 2 1 0 o \n
0000006
從hello 變成3210o呢?
※ 引述《mayasky ( )》之銘言:
: ※ 引述《RiverJackson (JACK)》之銘言:
: : 請問一下
: : 我去開hello這個檔案
: : 但是free一下 並沒有減少 4M空間(4000000)
: : 還有為什麼p 要宣告成int呢
: : exit(1);
: : }
: : p = mmap(NULL, 4000000, PROT_WRITE, MAP_SHARED, fd, 0);
: : if (p == MAP_FAILED) {
: : perror("mmap");
: : exit(1);
: : }
: : close(fd);
: : p[0] = 0x30313233;
: : munmap(p, 6);
: : return 0;
: 1.沒減少4M~因為你還沒真的用4M,只是先幫你作好4M的對應(VMA),demanded paging
: 2.你要用unsinged int也可以,反正一樣長,但你用VOID卻不能給值
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.164.142
→ james732:看起來跟 endian 有關 12/20 11:56
→ mayasky:樓上正解 12/20 13:04