, 나는 이것에 대한 free()
을 사용 :과부하 C++에서 연산자를 삭제는
class A
{
private:
int x;
int y;
public:
void operator delete(void* ptr)
{
free(ptr);
}
void operator delete[](void* ptr)
{
free(ptr);
}
}
int main()
{
A *a = new A();
A *b = new A[10];
delete a; // This should free 8 bytes
delete b; // This also 8 only
delete[] b;// This should free 80 bytes
return 0;
}
방법을 무료로이 작업을 수행하십시오
할당 어떤 크기 숨김으로 내가 동적 할당 매장을 아시는 바와 같이그래서 할당 해제하는 동안 거기에서 사용하는 동안
을 사용하지만 우리가 delete b;
또는 delete[] b;
을 사용할 때 숨겨진 할당은 alwyas 80을 말하면 어떻게 8은 할당 취소 만됩니다.
올바른 방법이 아니라면 우리는 어떻게 연산자를 무료로 삭제할 수 있습니까? 정의되지 않은 동작 결과 (일종의 T
일부 유형에 대해 n
) new T[n]
obrained으로 사용 된 포인터 delete array
사용
첫째로, 이들은 과부하가 아니라 대체물입니다. 또한 사용자는'operator delete()'의 커스텀 버젼을'operator new()'의 커스텀 버젼과 일치시킬 필요가 있습니다. –
@Peter 여러분의 의견이 반갑지 않길 바랍니다. ;-) –