我需要從先前分配的內存塊構造一個對象數組。然而,我不明白::operator new[]()
與::operator new()
在分配該塊時從用戶的角度不同,因爲兩者都需要該塊的大小。在下面的例子中,使用任何一個似乎都有相同的效果。我錯過了什麼嗎?:: operator new []()與:: operator new()不同的方式是什麼?
class J {
};
int main() {
const int size = 5;
{
J* a = static_cast<J*> (::operator new[](sizeof (J) * size));
for (int i = 0; i < size; i++)
new (&a[i]) J();
for (int i = 0; i < size; i++)
a[i].~J();
::operator delete[] (a);
}
{
J* a = static_cast<J*> (::operator new(sizeof (J) * size));
for (int i = 0; i < size; i++)
new (&a[i]) J();
for (int i = 0; i < size; i++)
a[i].~J();
::operator delete (a);
}
}
[有什麼單獨的「operator new \ [\]」的目的?](http://stackoverflow.com/questions/2499895/whats-the-purpose-of-having-a-separate -operator-new) –
我不認爲它是一樣的。那裏的OP知道有什麼不同,並問爲什麼。這裏OP在詢問有什麼不同。對於精通C++的人來說,容易被弄糊塗,但這絕對不是同一個問題。 – littleadv
@littleadv:就像我看到的那樣(仍然在考慮你的評論之後),這絕對是完全一樣的問題。 –