Вы напоминаете мне о подобной проблеме, с которой кто-то здесь встречался раньше. Поскольку для остальной части вашего кода недостаточно информации, я просто угадаю здесь.
Очевидно, students
- это массив структур Students
. Предполагая, что он размещен в куче, если вы сделаете это с помощью malloc
, он не будет работать должным образом, потому что malloc не будет правильно инициализировать элементы в структуре . В частности, здесь scores
- это объект не POD, и его необходимо правильно сконструировать, вызвав его конструктор.
// the member in your structure is not initialized
students = (struct Students*) malloc(10 * sizeof(Students));
// oops.. scores is not initialized
students[0].scores.push_back(100);
Чтобы решить эту проблему, вам нужно позвонить new
вместо этого. Он будет правильно инициализировать членов, вызывая их конструкторы.
// ok
students = new Students[10];