[問題] overload new []

作者: nickyhsu (火星牧羊人)   2012-11-18 13:39:44
講義 07. memory management p.29 參考連結
The only difference is that the size passed to new[] takes into account the
total size of the array plus some additional data used by the compiler to
distinguish between pointers to objects and arrays of objects.
傳進去的參數會多要 addition data 的空間
但是實驗結果好像沒有
===
void* operator new[](size_t t) {
cout << "size: " << t << endl;
void *p = malloc(t);
cout << "in: " << (unsigned)p << endl;
return p;
}
int main() {
int *p = new int[4];
cout << "out: " << (unsigned)p << endl;
return 0;
}
===
size: 16
in: 134520840
out: 134520840
16 = 4 (int) x 4
===
http://www.parashift.com/c++-faq-lite/num-elems-in-new-array.html
[16.14] After p = new Fred[n], how does the compiler know there are n objects
to be destructed during delete[] p?
似乎 compiler 不一定會用 over-allocate 的方式
===
我用的 compiler 是 gcc version 4.3.2 (Debian 4.3.2-1.1)
作者: yuting1105 (yuting)   2011-01-18 14:50:00
老師上課時有說class若不加destructor會有這種情況看來不用class時一般的variable也是一樣的情況
作者: djshen (djshen)   2011-01-18 14:51:00
built-in type
作者: yuting1105 (yuting)   2011-01-18 14:51:00
跟complier的版本應該沒有關係
作者: stmharry (橘子)   2011-01-18 15:32:00
實測結果也是跟cstr與destr有沒有explicitly宣告有關
作者: ric2k1 (Ric)   2011-01-18 17:12:00
恩恩,一樓上課有在認真聽哦!

Links booklink

Contact Us: admin [ a t ] ucptt.com