프로그램 종료시 세그멘테이션 오류가 나는 이유?

aw2310의 이미지

소스를 올리기는 좀 그렇고..

그냥 질문 올립니다.

c++ 프로그램인데요..

프로그램이 잘 동작하는데.. 종료시키면서 세그멘테이션 오류가
납니다.

보통 이런 것은 어떤 경우에 생기는지요?

질문이 너무 막연한가요?

파괴자에서 객체 파괴하면서 생기는건가? 흠..

purewell의 이미지

막연합니다. ㅡ_-) 소스를 올려주세요.

객체 파괴를 할 때 보통 이런 경우가 있습니다.

MyClass::~MyClass()
{
  Destory();
}

void MyClass::Destroy(void)
{
  delete pSomePointer;
}

...

MyClass cls;
...
cls.Destroy();
...

위와 같이 할 경우, Destory에서 해제된 pSomePointer영역이
MyClass cls 객체가 소멸되면서 또 한 번 pSomePointer를
지우려고 시도합니다. (물론 오류나죠)

보통 이런 스타일로 짜곤 합니다.

void MyClass::Destory(void)
{
  if (pSomePointer)
  {
    delete pSomePointer;
    pSomePointer=NULL;
  }
}

_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz

divetou의 이미지

여러가지 경우에 일어나는것 같습니다.

예를들면

printf("%d\n", 100/0);

요런 코드를 한번 컴파일해서 실행해 보세요..

세그멘테이션폴트가 나올꺼요?

그리고 주로

메모리를 잘못 사용하면 일어나죠 ^^;

이부분에 약해서 그런가?

아뭏든, 확실한건

아무 이유없이 일어나지는 않습니다.

==============================
꿈꾸는소년