An FMW message indicates that the program is about to write to memory that has been freed. An FMW message can also indicate that you referenced memory from a heap that has not been allocated.
This message can occur when you:
§ Have a dangling pointer to a block of memory that has already been freed (caused by retaining the pointer too long or freeing the memory too soon)
§ Index far off the end of a valid block
§ Use a completely random pointer that happens to fall within a freed block of memory
Notes:
§ A large deferred free queue length and threshold increases the chances of catching dangling pointer accesses long after the block has been freed and catching dangling pointer accesses to huge blocks of memory. This provides better error detection for Free Memory Read (FMR) and FMW messages. A smaller deferred free queue length and threshold limits the amount of memory on the deferred free queue, taking up less memory at run time but providing a lower level of error detection.
§ Purify detects FMW messages late. If late detect scanning is enabled in the settings dialog boxes, Purify reports them as Late Detect Free Memory Write (FMWL) messages in modules instrumented with minimal instrumentation. FMW messages caused by a call to Windows APIs, however, are reported as FMW messages, even with minimal instrumentation.
(C) Copyright IBM Corporation 1992, 2010.