精華區beta EE_DSnP 關於我們 聯絡資訊
我想這才是問題的主因... 雖然老師的範例程式中有#define S來強制將class 定為4的倍數,但是 MemoryBlock:T* getElm(size_t i) const { return (_begin + i); } 卻怪怪的,因為+i帶表pointer加上sizeof(T) * i 造成再宣告一串class B的Object時,相鄰的B只距離1 Byte而非 4 Byte ex: B *pb1 = new B; B *pb2 = new B; result: Calling alloc...(1) >> ptr = 0x10968577 -- Calling alloc...(1) | 只相差1 Byte XD >> ptr = 0x10968578 -- 結果Recycle時就爆了... 我改成 T* getElm(size_t i) const { char *pcbegin = (char*)_begin; pcbegin += S * i; return (T*)(pcbegin); } 不知道對不對.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.240.36
lunworld:大神... 11/18 00:18