Hi, I have the following two functions for converting a pointer to some struct Foo into the "value" struct Foo: (define value-Foo-1 (c-lambda ((pointer (struct "Foo"))) (struct "Foo") #<<c-lambda-end void* mem = malloc(sizeof(Foo)); new (mem) Foo(*___arg1); ___result_voidstar = mem; c-lambda-end )) (define value-Foo-2 (c-lambda ((pointer (struct "Foo"))) (struct "Foo") "___result = *___arg1;")) (value-Foo-1) works and (value-Foo-2) crashes. Is this expected? If so, is there a more elegant way to express the code of value-Foo-1? Also: is it OK to use malloc here or am I supposed to use ___alloc_rc or ___C_ASSIGN_NEW ? Do I have to worry about providing code for releasing the memory allocated? Finally, I am curious whether there is any difference internally between the handling of (struct "Foo") and (type "Foo"), or is this just naming for the sake of clarity?