Appearance
How To Debug iOS Memoery Issues
Guard Malloc
Guard Malloc is a special version of the malloc library (libgmalloc
) that replaces the standard library during debugging.
It places separate memory allocations on different virtual memory pages and then deletes the entire page when the memory is freed.
Subsequent attempts to access the deallocated memory cause an immediate memory exception rather than a blind access into memory that might now hold other data.
Malloc Scribble
After enable Malloc Scribble:
free
sets each byte of every released block to the value0x55
.malloc
sets each byte of a newly allocated block to the value0xAA
.
These values are defined in libmalloc-372.30.4/src/base.h.
c
#define SCRIBBLE_BYTE 0xaa /* allocated scribble */
#define SCRABBLE_BYTE 0x55 /* free()'d scribble */
#define SCRUBBLE_BYTE 0xdd /* madvise(..., MADV_FREE) scriblle */
#define SCRIBBLE_BYTE 0xaa /* allocated scribble */
#define SCRABBLE_BYTE 0x55 /* free()'d scribble */
#define SCRUBBLE_BYTE 0xdd /* madvise(..., MADV_FREE) scriblle */
Malloc Guard Edges
If set, malloc
adds guard pages before and after large allocations.