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.

Reply via email to