Выделение памяти с помощью malloc
не вызывает никаких конструкторов. Не смешивайте выделение C-стиля с объектами C ++. Они не играют хорошо вместе. Вместо этого используйте оператор new
для размещения объектов в коде C ++:
example *ex = new example;
Это более разумный код и вызовет конструктор std::string::string()
для инициализации строки, которая исправит segfault, который вы используете видя. И не забудьте удалить его, когда вы закончите, чтобы освободить память и вызвать соответствующие деструкторы:
delete ex;