2011-03-20 1 views
8

은 다음을 고려 코드 :새로운 또는 새로운 [] 연산자

typedef SomeType type_t[2]; 
SomeType * arr1 = new type_t; //new or new[] ??? 
type_t * arr2 = new type_t[3]; //new or new[] ??? 

new 버전은 1 일 및 2 차 케이스 (new 또는 new[])에서 호출되는 표준에 따라 어떻게 삭제 arr1arr2 (delete 또는 delete[])?

+2

솔직히 말해서 이것은 나쁜 습관 일 것입니다. – deek0146

+0

이것은 분명히 좋지 않은 행동이며 누군가 길을 잃을 수도 있습니다. –

답변

9

첫 번째 경우는 1 차원 배열을 할당하고 두 번째 경우는 2 차원 배열을 할당합니다. 두 파일 모두 delete[]을 통해 배포해야합니다. 그렇지 않으면 정의되지 않은 동작이 발생합니다.

1

두 경우 모두 new[]이 사용됩니다. SomeType에 대해 operator new[]을 정의하고 화면에 무엇인가를 인쇄하여 직접 확인할 수 있습니다. 두 경우 모두 인쇄 될 것입니다.