7
#include <new>
#include <cstdlib>
#include <iostream>
#include <stdexcept>
struct foo {};
inline void* operator new(size_t size, foo*) throw (std::bad_alloc)
{
std::cout << "my new " << size << std::endl;
return malloc(size);
}
inline void operator delete(void* p, foo*) throw()
{
std::cout << "my delete" << std::endl;
free(p);
}
int main()
{
delete new((foo*)NULL) foo;
}
出力(via ideone)のオーバーロード:新しいおよびオプションの引数をオペレータに削除
my new 1
を私の思考は、C++は、そのマッチング同じ引数の削除と追加の引数でnew'dオブジェクトを解放するというものでした、私は明らかに間違っていた。
私のオーバーロードされた削除を呼び出す上記のコードを取得する正しい方法は何ですか?
C++には配置-delete式はありませんが。手動でオブジェクトを破壊する必要があります。 –