[問題] 關於新建new memBlock

看板EE_DSnP作者 (蘇哥)時間16年前 (2009/05/07 11:03), 編輯推噓2(207)
留言9則, 2人參與, 最新討論串1/1
當原本的memBlock空間不夠的時候 會要新建一個memBlock 如果有開debug 會印出 New MemBlock... 0x936fdb8 Memory acquired... 0x936fdd0 發現memory acquired的位址和 new memBlock的位址不同 (cout<<_activeBlock->getMem(size,ret)) (cout<<_activeBlock) 請問這是不是因為 在memBlock class裡 存data member的次序 並不是把_begin存在最開頭 而是把_nextBlock放在最前面? 那又是不是每次得到的兩者的差都是固定的呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.4.234

05/07 11:07, , 1F
喔是不是還有存char[b]的b?
05/07 11:07, 1F

05/07 12:33, , 2F
"cout << _activeBlock" 印出來的是 _activeBlock 這個
05/07 12:33, 2F

05/07 12:34, , 3F
pointer 的 address, 而 "cout<<_activeBlock->getMem(..)"
05/07 12:34, 3F

05/07 12:34, , 4F
印出的是 "_activeBlock->_begin" 這個 pointer 的 address
05/07 12:34, 4F

05/07 12:35, , 5F
當然會不一樣囉!
05/07 12:35, 5F

05/07 12:36, , 6F
差距有可能很巧合的都固定, 但事實上很有可能會改變, 因為
05/07 12:36, 6F

05/07 12:37, , 7F
這兩個 pointer 本來就是不同時間 allocate 出來的...
05/07 12:37, 7F

05/07 14:11, , 8F
所以差距不固定是正常的囉??因為我看ref的好像都固定是
05/07 14:11, 8F

05/07 14:11, , 9F
18 可是我的是會亂跳
05/07 14:11, 9F
文章代碼(AID): #1A0a-46r (EE_DSnP)