作者jokerspy (蘇哥)
看板EE_DSnP
標題[問題] 關於新建new memBlock
時間Thu May 7 11:03:31 2009
當原本的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
1F:→ jokerspy:喔是不是還有存char[b]的b? 05/07 11:07
2F:推 ric2k1:"cout << _activeBlock" 印出來的是 _activeBlock 這個 05/07 12:33
3F:→ ric2k1:pointer 的 address, 而 "cout<<_activeBlock->getMem(..)" 05/07 12:34
4F:→ ric2k1:印出的是 "_activeBlock->_begin" 這個 pointer 的 address 05/07 12:34
5F:→ ric2k1:當然會不一樣囉! 05/07 12:35
6F:推 ric2k1:差距有可能很巧合的都固定, 但事實上很有可能會改變, 因為 05/07 12:36
7F:→ ric2k1:這兩個 pointer 本來就是不同時間 allocate 出來的... 05/07 12:37
8F:→ jokerspy:所以差距不固定是正常的囉??因為我看ref的好像都固定是 05/07 14:11
9F:→ jokerspy:18 可是我的是會亂跳 05/07 14:11