[Mono-list] Mono.Unix.Native.Syscall.readlink memory corruption

Kornél Pál kornelpal at hotmail.com
Tue Mar 14 06:51:42 EST 2006


> As in the C world we known MAX_PATH, might it not be better to change the
> semantics of the call so that it returns the path?

I agree that the function itself should handle the problem of allocating
sufficient buffer, freeing the buffer and simply return the path.

> On a related note:  if a C function mallocs some memory and returns a
> pointer
> to that memory, does p/invoke free the memory once marshalling is
> complete?

No. There is simply no way to automatically determine whether it should be
freed and there is even less chance to determine how (using what function)
it should be freed.

If you want to do so you have to use an IntPtr that you can free manually.
Note that you can alternatively use a custom marshaler but you have to do
the same with a more complex and probably more proper design.

Kornél



More information about the Mono-list mailing list