다음을 통해 공유


컴파일러 경고(수준 2) C4345

업데이트: 2007년 11월

오류 메시지

동작 변경: () 형식의 이니셜라이저로 구성된 POD 형식의 개체는 기본값으로 초기화됩니다.
behavior change: an object of POD type constructed with an initializer of the form () will be default-initialized

이 경고는 ()를 사용하여 POD 개체를 초기화할 경우 Visual Studio .NET에 포함된 Visual C++ 컴파일러의 동작 변경 내용을 보고합니다. 컴파일러에서는 이러한 개체를 기본값으로 초기화합니다.

자세한 내용은 컴파일 타임의 주요 변경 내용 요약을 참조하십시오.

다음 샘플에서는 C4345 경고가 발생하는 경우를 보여 줍니다.

// C4345.cpp
// compile with: /W2
#include <stdio.h>

struct S* gpS;

struct S
{
   // this class has no user-defined default ctor
   void *operator new (size_t size, void*p, int i)
   {
      ((S*)p)->i = i;   // ordinarily, should not initialize
                        // memory contents inside placement new
      return p;
   }
   int i;
};

int main()
{
   S s;
   // Visual C++ .NET 2003 will default-initialize pS->i
   // by assigning the value 0 to pS->i.
   S *pS2 = new (&s, 10) S();   // C4345
   // try the following line instead
   // S *pS2 = new (&s, 10) S;   // not zero initialized
   printf("%d\n", pS2->i);
}