삭제와 함께 사용해야합니다. 왜요?
어떤 개체에 new 연산자가 적용되면 (상세하게 이동할 필요가없는) compiler do some internal book-keeping
이 삭제 될 때 해당 메모리를 적절하게 할당 해제 할 수 있습니다. 소멸자가 객체 which are fully constructed
에서만 호출된다고 들었을 것입니다. not-fully-constructed objects is efficiency
에서 소멸자가 호출되지 않도록하는 한 가지 이유. 소멸자가 허용되면 여분의 장부 보관을 유지해야 삭제가 객체의 얼마나 많은 비트가 많은 메모리 만 삭제할 수 있는지 알 수 있습니다.
이제 상위 레벨은 어떻게됩니까? 새로운 사용하는 경우
두 가지 일이 : -
1) adequate amount of memory is allocated.
2) Then constructors are called to initialize object in that memory.
두 개의 다른 것들을 삭제 사용
일 : - 당신은 단지 컴파일러 수있는 방법을 삭제 사용하는 경우
1) destructors are called for the objects in memory.
2) memory is de-allocated then.
다음 적절한 작업을 수행합니다. 객체가 스택에 할당 된 경우
, 당신의 컴파일러는 그 범위의 끝에서 소멸자에 대한 호출을 생성하는 것입니다 : -
스택 개체에 대한 삭제 사용. 즉, 소멸자를 두 번 호출합니다.
소멸자를 두 번 호출하는 것 외에 할당되지 않은 메모리의 할당을 해제하려고 시도합니다.
어떻게 더 메모리가 새에 의해 할당하지 않았다 것을 삭제할 수 있습니다? – Leeor
'나는 항상 새로운 연산자를 사용하여 삭제해야한다는 것을 알고 있습니다. '사실 당신은 이것을 알지 못합니다. – user93353
스택에 할당 된 메모리를'삭제 '하려고하고 세그먼트 오류가 발생합니다. – Ares