문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문
Visual Studio 2017을 사용하는 것이 좋습니다.

컴파일러 오류 C3841

삭제 식이 잘못되었습니다. 관리되는 형식 'type'에 소멸자가 정의되어 있지 않습니다.

/clr:oldSyntax를 사용하여 컴파일한 경우에는 포인터를 삭제해야 종료됩니다. 따라서 클래스에 소멸자가 정의되지 않은 경우(Finalize 메서드가 제공되지 않았음을 의미)에는 형식에 대한 포인터를 삭제하면 오류가 발생합니다.

C3841은 /clr:oldSyntax를 사용하는 경우에만 발생합니다.

다음 샘플에서는 C3841 오류가 발생하는 경우를 보여 줍니다.

// C3841.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>
__gc class A
{   // implicitly derived from System::Object
public:
   ~A() {};
};

int main()
{
   System::Object* p = new A;
   delete p;   // C3841 since System::Object has no destructor defined
   A* q = static_cast<A*>(p);
   delete q;   // OK since A has a destructor
}
표시: