|
|
|
IMalloc Interface |
|
IID_IMalloc |
{00000002-0000-0000-C000-000000000046} |
|
The IMalloc interface allocates, frees, and manages memory.
Call the methods of IMalloc to allocate and manage memory. The COM libraries and object handlers also call the IMalloc methods to manage memory. Object handlers should call CoGetMalloc to get a pointer to the IMalloc implementation on the task allocator object and use the implementation of those methods to manage task memory.
The IMalloc methods Alloc, Free, and Realloc are similar to the C library functions malloc, free, and realloc. For debugging, refer to the functions CoRegisterMallocSpy and CoRevokeMallocSpy.
Note: To get the interface pointer to the memory allocator use:
DIM hr AS LONG DIM pMalloc AS DWORD hr = CoGetMalloc (1, VARPTR(pMalloc))
We need to use VARPTR(pMalloc) because this parameter has been wrongly declared as BYVAL instead of BYREF in Win32Api.inc.
|
|
Methods in VTable order |
|
|
IUnknown Methods |
Description |
|
QueryInterface |
Returns pointers to supported interfaces. |
|
AddRef |
Increments reference count. |
|
Release |
Decrements reference count. |
|
IMalloc Methods |
Description |
|
Alloc |
Allocates a block of memory. |
|
Realloc |
Changes the size of a previously allocated block of memory. |
|
Free |
Frees a previously allocated block of memory. |
|
GetSize |
Returns the size in bytes of a previously allocated block of memory. |
|
DidAlloc |
Determines whether this instance of IMalloc was used to allocate the specified block of memory. |
|
HeapMinimize |
Minimizes the heap by releasing unused memory to the operating system. |
|
Alloc |
|
FUNCTION IMalloc_Alloc ( _ BYVAL pthis AS DWORD PTR _ , BYVAL cb AS DWORD _
)
AS DWORD
LOCAL DWRESULT AS LONG END FUNCTION
|
|
FUNCTION IMalloc_Alloc ( _ BYVAL pthis AS DWORD PTR _ , BYVAL cb AS DWORD _
)
AS DWORD
! push cb
|
|
Realloc |
|
FUNCTION IMalloc_Realloc ( _ BYVAL pthis AS DWORD PTR _ , BYVAL pv AS DWORD _ , BYVAL cb AS DWORD _
) AS DWORD
LOCAL DWRESULT AS LONG END FUNCTION
|
|
FUNCTION IMalloc_Realloc ( _ BYVAL pthis AS DWORD PTR _ , BYVAL pv AS DWORD _ , BYVAL cb AS DWORD _
) AS DWORD ! push cb
! push pv
END FUNCTION
|
|
Free |
|
SUB IMalloc_Free ( _ BYVAL pthis AS DWORD PTR _ , BYVAL pv AS DWORD _
) CALL DWORD @@pthis[5]
USING IMalloc_Free (pthis, pv) END SUB
|
|
SUB IMalloc_Free ( _ BYVAL pthis AS DWORD PTR _ , BYVAL pv AS DWORD _ )
! push pv END SUB
|
|
GetSize |
|
FUNCTION IMalloc_GetSize ( _ BYVAL pthis AS DWORD PTR _ , BYVAL pv AS LONG _
)
AS DWORD
LOCAL DWRESULT AS DWORD END FUNCTION
|
|
FUNCTION IMalloc_GetSize ( _ BYVAL pthis AS DWORD PTR _ , BYVAL pv AS LONG _
)
AS DWORD
! push pv END FUNCTION
|
|
DidAlloc |
|
FUNCTION IMalloc_DidAlloc ( _ BYVAL pthis AS DWORD PTR _ , BYVAL pv AS DWORD _
)
AS LONG
LOCAL LRESULT AS LONG END FUNCTION
|
|
FUNCTION IMalloc_DidAlloc ( _ BYVAL pthis AS DWORD PTR _ , BYVAL pv AS DWORD _
)
AS LONG
! push pv END FUNCTION
|
|
HeapMinimize |
|
SUB IMalloc_HeapMinimize
(BYVAL pthis AS DWORD PTR)
|
|
SUB IMalloc_HeapMinimize (BYVAL pthis AS DWORD PTR)
END SUB
|
Page last updated on Thursday, 16 March 2006 06:04:34 +0100