講義 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)