Microsoft KB Archive/12159

= How To Use malloc and _fmalloc in an Application =

Article ID: 12159

Article Last Modified on 7/13/2004

-

APPLIES TO

 The C Run-Time (CRT), when used with:  Microsoft C Professional Development System 5.1

 Microsoft C Professional Development System 6.0

 Microsoft C Professional Development System 6.0a

 Microsoft C Professional Development System 6.0a</li></ul>

 Microsoft C Professional Development System 5.1</li></ul>

 Microsoft C Professional Development System 6.0</li></ul>

 Microsoft C Professional Development System 6.0a</li></ul>

 Microsoft C/C++ Professional Development System 7.0</li></ul>

 Microsoft Visual C++ 1.0 Professional Edition</li></ul>

 Microsoft Visual C++ 1.5 Professional Edition</li></ul>

 Microsoft Visual C++ 1.0 Professional Edition</li></ul>

 Microsoft Visual C++ 2.0 Professional Edition</li></ul>

<ul> <li>Microsoft Visual C++ 4.0 Standard Edition</li></ul> </li></ul>

-

<div class="notice_section">

This article was previously published under Q12159

<div class="notice_section">

<div class="summary_section">

SUMMARY
The text below provides information about using the _fmalloc and malloc functions in an application.

An application can use both the malloc and _fmalloc functions without restriction. Each function separately tracks its memory allocations. The application must use the free and _ffree functions, respectively, to free memory allocated by these functions.

The malloc functions do not perform any "garbage collection" activity to reclaim free memory between allocations. The application must explicitly free memory when appropriate.

The malloc functions can fragment memory. However, when an application frees a block of memory that is adjacent to another block of free memory, the appropriate free function consolidates the blocks to reduce the damage caused by fragmentation.

The _fmalloc function does not allocate memory that crosses a segment boundary and fails any allocation request for more than 64K of memory. To allocate a larger memory block, use the halloc function (the huge memory model memory allocation function). Your application must deal with segment boundaries in a huge memory block.

Windows NT uses a flat 32-bit memory model; every address requires 32 bits. Because Windows NT does not use segments, far and huge versions of malloc and free are not required. Therefore, the C runtime library that supports Windows NT does not include the _fmalloc, _ffree, halloc, and _hfree functions. The elimination of segments also removes the 64K maximum allocation limit; an application can request up to 2 GB with malloc.

Keywords: kbhowto kbcrt KB12159

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.