This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project. See the Cygwin home page for more information.
Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: malloc and free mixing in VC++ and cygwin


On Thu, Apr 29, 1999 at 08:26:48AM -0400, Jonathan Pryor wrote:
>Maybe. :)
>
>More precisly, can `malloc' be used to allocate memory in cygwin
>and `free' be used in VC to free the cygwin-allocated memory?
>No -- they use different memory schemes.
>
>However, that doesn't mean that you can't have one environment
>allocate memory, and have the other free it -- you just can't
>use the C runtime functions.
>
>The Win32 functions CoTaskMemAlloc() and CoTaskMemFree() can
>be used to allocate/free memory between 2 otherwise incompatible
>memory schemes.  I suspect that most of the other Win32 memory
>functions (GlobalAlloc/GlobalFree, etc.) could also be used
>to do this as well.

You could use these routines to free the memory but you'd end
up with a severely corrupted heap as far as cygwin is concerned.
Cygwin's free() command does more than (potentially) return memory
to the system.  In fact, it usually doesn't even return memory to
the system.  It also keeps a list of all allocated memory for reuse
by other malloc calls.  This is a pretty standard way of doing things.

I'd suggest just using straight Windows routines for doing memory
allocation and deallocation if you have this requirement.

-chris

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com