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