December 03, 2013
On Tuesday, 3 December 2013 at 16:52:29 UTC, Ali Çehreli wrote:
> On 12/03/2013 06:45 AM, Chris wrote:
>
> > I became aware of uninitialized variable. I think that the
> latter
> > behavior is the correct one (segfault > crash). But why did
> it work
> > correctly in the other D program, how did the C variable get
> initialized?
>
> Undefined behavior sometimes manifests itself as working correctly. :)

True. The weird thing was that it seemed to work correctly in one program, i.e. during the test runs it calculated the right value of "int length;" and returned the string that was expected while it wasn't even initialized (!), and failed immediately in the other program defaulting to value -5180 or something (which is correct).

> Regarding your original question, I suggest that the C library provides a function that frees the memory itself. The D code should just call that function with the pointer at hand.
>
> Ali

You are right of course. Especially because I will need the C library for other languages like Python and I don't think they can handle it the way D can. Today the "hack" of freeing it from D worked well. The memory was freed correctly.
1 2
Next ›   Last »