楼主:
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)