Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Expand Minimize
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here.


Tests any memory address to ensure that it is contained entirely within the program's memory space.

BOOL AfxIsValidAddress(
   const void* lp,
   UINT nBytes,
   BOOL bReadWrite = TRUE 



Points to the memory address to be tested.


Contains the number of bytes of memory to be tested.


Specifies whether the memory is both for reading and writing (TRUE) or just reading (FALSE).

In debug builds, nonzero if the specified memory block is contained entirely within the program's memory space; otherwise 0.

In non-debug builds, nonzero if lp is not NULL; otherwise 0.

The address is not restricted to blocks allocated by new.

// Allocate a 5 character array, which should have a valid memory address.
char *array = new char[5];

// Create a null pointer, which should be an invalid memory address.
char *null = (char *)0x0;

ASSERT(AfxIsValidAddress(array, 5));
ASSERT(!AfxIsValidAddress(null, 5));

Community Additions

© 2015 Microsoft