看板 EE_DSnP 關於我們 聯絡資訊
我想要alloc一塊size_of(MemBlock)記憶體時 由MemTestObj中, overload "new" 這個operator後, 做return(void *)(_memMgr->alloc(t), 這個t應該是MemBlock吧(我猜想的) 如果上面是正確的話,那在MemTest::newObjs(size_t n)時, 應該就可以寫new MemBlock; 但compiler提供的錯誤訊息如下: memTest.h:53: error: expected type-specifier before 'MemBlock' memTest.h:53: error: expected `;' before 'MemBlock' 我知道在new Template<class T>時應該要做new T(size_t, void*); e.g new int(20); 因為只寫int* p = new int; compile會出現 new.cpp:8: error: expected type-specifier before ';' token new.cpp:8: error: invalid conversion from 'int' to 'void*' new.cpp:8: error: initializing argument 2 of 'void* operator new(size_t, void*)' 但我的疑問有2 1. 20指的應該是size_t吧,那void*是什麼,而且size_t也有點怪怪的,想請問各位高手 這個20在c裡面代表的是??? int ?? or 一個virtual的數字??? 2. 20若指的是void*,那size_t以上面的例子又是多少呢? 最後,因為MemBlock的constructor如下 MemBlock(MemBlock<T>* n, size_t b) : _nextBlock(n) 所以new MemBlock(para_1, para_2); para_1, para_2又該怎麼傳入呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.68.73.11 ※ 編輯: ijb 來自: 219.68.73.11 (12/12 10:31)
valken:t是指# of bytes不是block數吧 12/12 13:34
valken:MemBlock constructor的參數 就看它有哪些member data 12/12 13:34
valken:根據需要合理的填入吧 12/12 13:35
ijb:嗯..謝謝!!! 12/12 13:55