So I followed a suggestion in this thread
http://social.msdn.microsoft.com/Forums/hu-HU/vclanguage/thread/01bae812-0a5f-4b17-9745-b1c8293a25b1 and made a list of each allocation 'new' pointer I made since i figured it was probably my fault where i was using dynamic arrays of my own.
This led me to a call of list::clear() . Strange thing is, when I follow the code into <xmemory> the last thing I see is that the pointer is to valid data (a string of Characters [a struct with a char and some color info])
You can see here
http://imgur.com/pxkqG that the object being destroyed has a valid member mLines, which is an array, and the first value has a valid member called mChars. This itself is an array of Characters and you can see the first mChar is 'D'.
Now when I proceed and execute the line _DESTRUCTOR(_Ty, _Ptr); I get a debug error and I get sent straight to the destructor for the first mLine, but the member mChars no longer has valid values! it appears to have been freed.
If I follow the destructor for the appropriate object, we have only one line: delete[] mLines;
Now this I would expect is going to call the destructor for all the lines in mLines, but here is where we find that we suddenly have a line with an invalidated pointer!
Any suggestions of where to go from here are greatly appreciated.