기본 소멸자 제공시 실행 오류가 발생합니다. 그러나 기본 소멸자를 제공하기 위해 컴파일러에 맡기면 안전하게 실행됩니다.MS Visual C++ 2010 오류 : 기본 소멸자 제공시
class foo
{
private:
int m_size;
int* m_array;
public:
foo(int a_size):m_size(a_size), m_array(new int(a_size)){}
~foo() {
delete [] m_array;
}
void setArray();
};
void foo::setArray()
{
for(int i=0; i<m_size; ++i)
m_array[i] = 10*i;
}
int main(int argc, const char* argv[])
{
class foo obj(6);
obj.setArray();
system("pause");
return 0;
}
런타임 오류 :
이 Destructors.exe하거나로드 된 DLL이 어떤 버그를 나타내는 힙의 손상이 원인 일 수 있습니다.
또한 Templates.exe에 포커스가있는 동안 사용자가 F12 키를 누르기 때문일 수 있습니다.
출력 창이 더 많은 진단 정보를 가지고있을 수 있습니다.
감사합니다.
난 당신 같은이 모습을 만들려고 노력하고 어떤 언어 모르겠지만, 당신의 형식이 나에게 견과류를 구동한다. –
@Ben Voigt 죄송합니다! 나는 SO에서 포맷하는 것을 처음이다. 뭐가 잘못됐다고 생각하니? – Mahesh
세미콜론을 사용하기 전에 공백이 생기고 범위 연산자'::'주위에 공백이 생깁니다. 실제로 불법은 아니지만 모든 다른 C++ 프로그래머가 작성한 코드와 일치하지 않습니다. 'for' 루프는 꼭 들어가야합니다. 왜냐하면 지금은 닫힌 중괄호가 함수 대신 for 루프에 속해있는 것처럼 보입니다. 그리고 개인적으로 타입과 함수의 여는 중괄호를 새 행에 삽입합니다 (단, 같은 줄에'if','for','do' 및'while' 다음에 중괄호를 씁니다). –