[問題] CodeBlocks如何看連續記憶體位置的內容?

看板C_and_CPP (C/C++)作者 (丁丁)時間16年前 (2009/12/26 18:16), 編輯推噓2(2012)
留言14則, 6人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 我有一個struct如下: typedef struct Node{ int key; int degree; struct Node *leftchild; struct Node *rightsibling; struct Node *parent; }node; 每當需要的時候才會動態配置記憶體(malloc),弄一個node出來。 這個struct算一算應該是佔5*4=20bytes。sizeof(node)也得到20,表示無誤。 但很神奇的地方是,我連續兩次malloc,弄兩個node出來, 第一個node他的起始位置是:0x7f1070 第二個node他的起始位置是:0x7f10a0。 這中間卻差了30個bytes,跟原先預估的20bytes不合。 想藉這機會請問一下,codeBlocks有辦法讓它顯示0x7f1070到0x7f10a0這樣連續記憶體 區域的內容嗎? ←這其實是我比較想問的XD 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) CodeBlocks 8.02 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.230.240

12/26 18:22, , 1F
malloc 並沒有說連續兩次要來的記憶體會連續吧...??
12/26 18:22, 1F

12/26 18:29, , 2F
MALLOC丟出去就是OS的事情了吧?在HEAP本來就不一定
12/26 18:29, 2F

12/26 18:29, , 3F
會連續喔
12/26 18:29, 3F

12/26 18:31, , 4F
另外問一下...我怎麼算出來是60BYTES?
12/26 18:31, 4F

12/26 18:48, , 5F
原來malloc丟出去就是os的事了... 那個struct因為有兩個
12/26 18:48, 5F

12/26 18:49, , 6F
int,各是4 bytes,而point不管指向什麼型態都是4 bytes
12/26 18:49, 6F

12/26 18:49, , 7F
有5個4bytes 就是20bytes啦
12/26 18:49, 7F

12/26 18:50, , 8F
另外還是想問CodeBlocks可以看連續記憶體位置的內容嗎?
12/26 18:50, 8F

12/26 18:50, , 9F
我是說兩POINTER相減
12/26 18:50, 9F

12/26 21:02, , 10F
兩個相減是 0x30 = 48 bytes ....
12/26 21:02, 10F

12/27 00:30, , 11F
你還得看heap alloc alignment + heap header (4byte)
12/27 00:30, 11F

12/27 00:31, , 12F
記得gcc之後採用的dmalloc header overhead是4byte
12/27 00:31, 12F

12/27 12:26, , 13F
CodeBlocks 可以看阿 Debug ->Info中找找
12/27 12:26, 13F

12/27 17:21, , 14F
謝謝樓上 在debug->examine memory裡找到了!
12/27 17:21, 14F
文章代碼(AID): #1BDU9iqF (C_and_CPP)
文章代碼(AID): #1BDU9iqF (C_and_CPP)