Surely I understand it now with this whole business of dynamic memory
management by garbage collector.

Understand my logic: ALLOC is "dangerous" because it is not a
straightforward function as malloc.  Because Data_Make_Struct also calls
ALLOC, then it is also dangerous.  Not only Data_Make_Struct, but *all* 
the seemingly innocent Ruby function that may allocate memory are, in some
sense, dangerous.  All C programmers who never dealt with garbage
collector before have to know about this issue of double initialization,
because the bug may be difficult to trace.  Therefore:

    "If I can use malloc instead of ALLOC to accomplish the same purpose,
    why should I ever need to use ALLOC?"

It seems the word "dangerous" has been taken beyond its intended
interpretation.  Remember the phrase "Goto Considered Harmful" or "Java
new Considered Harmful"?  I have changed it from "harmful" to "dangerous",
but it seems someone is realy upset about the word "dangerous".  We are   
not talking about technicals anymore, but just personal stuff.  What a 
waste...

Another example: If you responded to the statement "never use ALLOC; use
malloc instead" with "it is not a good idea, because of this, this,
....", you would have contributed to the body of knowledge; however, when
you just answer "it is stupid" without giving any reason, it is really a
waste... you accomplish nothing: it does not help me or anybody else.

Bill

===========================================================================
ts <decoux / moulon.inra.fr> wrote:
>  Data_Make_Struct() is *not* dangerous. The goal of Data_Make_Struct() is
>  to call ALLOC(), initialize all members of the struct to zero then call
>  Data_Wrap_Struct()

>  If you have not understood this : don't use it.



> Guy Decoux