새로운 클래스를 오버로드하고 삭제합니다 (이러한 메모리를 가져 와서 메모리 풀로 반환합니다). 나에게 실망스러운 점은, 오버로드 된 클래스가 delete 오버로드 된 함수 get이 호출되기 전에 호출 된 소멸자를 가지고 있다는 것입니다. 이걸 어떻게 막을 수 있니?호출중인 소멸자가 중지되었습니다.
class Message
{
~Message() { ... }
void* operator new(std::size_t sz) { ... }
void operator delete(void* ptr) { ... }
};
편집 : 클래스의 멤버가 파괴되지만 메모리가 소멸자에 의해 해제되지 않습니다 생각에서 올바른
암; delete 함수는이 책임을 가지고있어서 어떤 경우에 메모리가 할당 해제되는 것을 막을 수 있습니까?
결과 : 페니 (Penny)는 메모리 및 구조/파괴의 할당/할당 해제가 별도의 항목임을 유의했습니다. 이제 비어있는 소멸자가 생겨서 새로운/과부하가 오버로드되었습니다.
나는 그것이 왜 절망적인지 모르겠다. C++은 이와 관련하여 매우 논리적입니다. 아무것도 할 필요가 없다면 빈 소멸자를 남겨주세요. –