The _BLOCK_TYPE_IS_VALID assertion gets fired, when you overwrite the header of an block allocated by new
. This happens when you slice objects, use dead objects, etc.
You should have a look at your complete code, and try to work from the data you have in your debugger. This short code snippet contains several ‘curious’ usage of C++, but no obvious point at which this produces the described error (at least for me).