이전에 할당 된 메모리 블록에서 객체 배열을 생성해야합니다. 그러나, 나는 블록의 크기를 필요로하기 때문에 어떤 방식으로 ::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);
}
}
가능한 [별도의 "연산자 new \ [\]"를 갖는 목적은 무엇입니까?] (http://stackoverflow.com/questions/2499895/whats-the-purpose-of-having-a-separate -operator-new) –
나는 그 같은 생각을하지 않습니다. 거기 OP는 차이가 무엇인지 알고 있었고 이유를 묻고있었습니다. 여기서 OP는 그 차이점을 묻습니다. C++에 능통 한 사람이라면 혼란 스럽기 쉽지만 분명히 같은 질문은 아닙니다. – littleadv
@ littadadv : 내가 (여전히 귀하의 의견을 고려한 후) 그것을 볼 때, 확실히 똑같은 질문입니다. –