[Bug c++/31289] gcc412 elides code in operator delete() override method
jima at cadence dot com
gcc-bugzilla@gcc.gnu.org
Wed Mar 21 16:14:00 GMT 2007
------- Comment #7 from jima at cadence dot com 2007-03-21 16:13 -------
(In reply to comment #6)
> ... the proper way is to start a new object lifetime using placement new.
Are you referring only to internal operations in MyHeap::Malloc (in the demo
program), or do you mean that the overall scheme can be re-coded somehow
to use placement new without any casts?
If the latter, I don't understand how that is possible, because the type of
the object being allocated is not known -- the API of override operator new
is (void *, size_t).
Note that the interface we are trying to preserve (in use for many years) is
that application programmers simply derive from a special base class when
declaring their own classes, and then objects will use the special allocator.
We can not require application coders to explicitly write placement-new
(or call any kind of special allocator interface); that would be unworkable
for human reasons, and also would prevent using generic template functions
which must use ordinary "new" to allocate objects of template-parameter type.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31289
More information about the Gcc-bugs
mailing list