Sometimes when I get error messages concerning freed segments, the information does not match the allocated segment before it was freed. Why?
Prior to actually freeing a memory segment, Memory Advisor uses a FIFO (first-in-first-out) queue to store information about the most recently freed segments. When the queue is full, Memory Advisor removes the first freed segment and combines it with adjoining, previously freed segments. If you access this segment after it has left the FIFO queue, it appears to Memory Advisor that you are accessing part of the previous segment, not the new segment. If the information about a freed segment is still in the queue, the error messages for these segments should be accurate. However, if the free occurred long enough ago, it may be out of the queue. Therefore, the allocation information is no longer there. If you are having this problem in your program, increase the size of the queue (using the MA_FIFO_LENGTH option), or disable the reuse of freed segments (using the MA_REUSE option).