[Issue 2590] Deallocator is not called if constructor fails.

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Apr 5 04:43:26 PDT 2010


http://d.puremagic.com/issues/show_bug.cgi?id=2590



--- Comment #6 from Steven Schveighoffer <schveiguy at yahoo.com> 2010-04-05 04:43:18 PDT ---
(In reply to comment #5)
> 
> But the allocator is *not* called automatically, strictly speaking. 'new' is
> your call to the allocator. Since you use malloc() instead of the garbage
> collector, 'delete' then becomes necessary.
> 
> Under normal circumstances, an exception thrown during construction wouldn't
> leak memory because the garbage collector would eventually collect it; in your
> code, you took on the task of manually allocating and deallocating memory for
> objects of class C. It makes sense to me that such custom allocation would
> entail finer management of exceptional situations.

Not that I disagree this bug is obsolete, but what would you call delete on? 
With the failed construction, you never got a pointer to the class data.

If class allocators were to be saved, I think the correct behavior on a failed
constructor should be to call the deallocator.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list