std :: string, вероятно, содержит указатель на буфер, содержащий строковые данные. Когда вы вызываете toArray (human), вы выполняете memcpy () для строки класса Dummy, включая указатель на данные строки. Затем, когда вы создаете новый объект Dummy с помощью memcpy (), прямо в него, вы создаете новый строковый объект с тем же указателем на строковые данные, что и у первого объекта. Следующее, что вы знаете, манекен разрушается, а копия указателя уничтожается, затем человек разрушается и БАМ, вы получаете двойное освобождение.
Обычно копирование объектов с использованием memcpy приводит к возникновению всевозможных проблем, например, той, которую вы видели. Вероятно, это будет лишь верхушка айсберга Вместо этого вы могли бы рассмотреть возможность явной реализации какой-либо функции сортировки для каждого класса, который вы хотите сериализовать.
В качестве альтернативы вы можете обратиться к библиотекам json для c ++, которые могут сериализовать вещи в удобный текстовый формат. Протоколы JSON обычно используются с пользовательскими сетевыми протоколами, где вы хотите сериализовать объекты для отправки через сокет.