다음은 내 테스트 클래스입니다배치 새의 메모리는 []
CASE_1를 : -
void* raw = operator new(4* sizeof(Base));
Base* b = static_cast<Base*>(raw);
for(int i = 0; i < 4; i++)
new (&b[i]) Base(i);
CASE_2 : -
void* raw = operator new[](4* sizeof(Base)); <<<<<<<<<<<<<
Base* b = static_cast<Base*>(raw);
for(int i = 0; i < 4; i++)
new (&b[i]) Base(i);
CASE_1에서는 평 균 new
을 사용하여 충분한 메모리를 할당했지만 Case_2에서는 new[]
을 사용하여 할당했습니다. 내가 테스트로 모두 잘 사항 : -
for(int i = 0; i < 4; i++)
{
Base* b1 = b;
cout << (*(b1+i)).data;
}
는 그러나, 나는 혼란 스러워요 CASE_1 객체의 배열에 대한 메모리 할당을하는 올바른 방법인지. 두 접근 방식 모두 유사합니다. this page을 인용
C++에서 배열을 할당하는 올바른 방법은 ['std :: vector'] (http://en.cppreference.com/w/cpp/container/vector)를 사용하는 것입니다. – Mgetz
@Mgetz : 일반적으로 그렇습니다. 그러나 가끔은 할당 된 메모리를 초기화하는 비용을 피하기를 원하며'vector'로 그렇게 할 수있는 (잘 정의 된) 방법은 없습니다. –
@MikeSeymour [나는 실제로 거기 있다고 믿는다.] (http : //en.cppreference. – Mgetz