2012-07-28 5 views
0

를 NULL로 초기화되지 않은 새 같은 것을 사용하여 포인터의 배열 생성이 :그들이 내가 사용하는 경우

int** newData = new int*[100]; 

나는이 포인터가 발생, 100 객체 (포인터) 및 기본 생성자의 배열이 그들을 호출 수 NULL이되어야합니다.

코드의 중요한 부분이고 배열의 무효화를 피하려면 좋은 방법으로 피할 수 있습니까? (사용하지 않고 malloc)

+3

기본 생성자가 호출되지 않습니다. http://ideone.com/Uinud – chris

+0

루프에서 각 생성자를 실행해야합니다. –

+3

NULL 일 경우, 우연히 만나는 것일 수도 있고, 컴파일러의 일부 디버깅 옵션 일 수도 있습니다. –

답변

3

이것은 구현의 품질 문제입니다. 포인터는 표시된 코드에서 초기화되지 않을 수도 있습니다. 더 많은 성능을 보장하는 C++에서 동적으로 포인터 배열을 할당하는 다른 방법은 없습니다.

(포인터들이 하나 초기화되거나 초기화되지 않은 남아 있습니다, 생성자가 없습니다.)

1

이 경우에 만들어 더 constructor 전화도 없다, 당신이 얻을 것은 가득 할 일이 그 중 하나 (100) 포인터의 배열 0 또는 컴파일러가 코드를 작성했습니다. 언어 표준에서는 new이 호출 될 때이 배열을 초기화 할 필요가 없습니다.

이제 다른 질문에 : critical part of code에있는 경우 - 단순히 이 프로그램의 초기화 시간에 필요한 배열을 사전 할당하지 않는 이유는 무엇입니까? 이렇게하면 미리 정의 된 값으로 포인터를 설정하는 임의의 코드에 대해 걱정할 필요가 없습니다.

관련 문제