IMallocSpy::PreRealloc
Called just
before invoking IMalloc::Alloc
ULONG PreRealloc(
void * pRequest, |
//Pointer the caller is passing to IMalloc::Realloc |
ULONG cbRequest, |
//Byte count the caller is passing to
IMalloc::Realloc |
void ** ppNewRequest, |
//Indirect pointer to be reallocated |
BOOL fSpyed |
//Whether the original allocation was spyed |
); |
|
Parameters
pRequest
[in] Pointer
specified in the original call to IMalloc::Realloc
cbRequest
[in] Memory block s
byte count as specified in the original call to IMalloc::Realloc.
ppNewRequest
[out]
Indirect pointer to the actual memory block to be reallocated. This may be
different from the pointer in pRequest if the implementation of IMallocSpy::PreRealloc
extends or modifies the reallocation. This is an out pointer and should always
be stored by PreRealloc.
fSpyed
[in] TRUE if
the original allocation was done while the spy was active.
Return Value
The actual
byte count to be passed to IMalloc::Realloc
Remarks
The IMallocSpy::PreRealloc
implementation may extend and/or modify the allocation to store debug-specific
information with the allocation. Thus, the ppNewRequest parameter may
differ from pRequest, a pointer to the request specified in the original
call to IMalloc::Realloc.
PreRealloc can force memory allocation failure by returning 0,
allowing testing to ensure that the application handles allocation failure
gracefully in all cases. In this case, PostRealloc is not called and Realloc
returns NULL. However, if IMalloc::Realloc encounters a real memory
failure and returns NULL, PostRealloc is called. Forcing allocation
failure is effective only if cbRequest is not equal to 0.
See Also