Вы выделили немного памяти в кучу и не смогли ее инициализировать.
0xcd
- это шаблон заполнения, используемый кучей отладки: перед тем, как динамически выделенная память будет передана вашей программе, он заполняется этим шаблоном, чтобы помочь вам найти неинициализированные переменные.
Что касается того, почему изменение определения класса влияет на результат, вы, возможно, делаете неверную арифметику указателя, обращаетесь к чему-то за пределами динамически размещаемого объекта или к любой другой вещи, которая больше не проявляется как ошибка, когда вы иметь больший объект. Вы также можете нарушать правило с одним определением, если часть источника была построена с использованием старого определения, а часть источника построена с новым определением.
Есть много вещей, которые могут вызвать проблемы такого рода: лучше всего ставить перерыв в отладчике, когда это происходит, и проследить назад, чтобы увидеть, откуда возникла ошибка (иногда это может быть очень забавно; мне пришлось проследить неинициализированная переменная через сетевое соединение один раз).