#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;
}
uscita (via ideone):sovraccarico new e delete operatore con argomenti opzionali
my new 1
Il mio pensiero è che C++ avrebbe liberato un new'd oggetto con ulteriori discussioni con la sua corrispondenza eliminare degli stessi argomenti, ma ovviamente ero incorretto.
Qual è il modo corretto per ottenere il codice sopra per chiamare la mia eliminazione sovraccaricata?
Non c'è espressione posizionamento cancellare in C++. Devi distruggere l'oggetto manualmente. –