• Что происходит с string при передаче ссылки строки в структуру, почему может крашится?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    brick = (OBJECT*)realloc(brick, sizeof(*brick) * brickLength);


    Вот этот код вызывает ошибку. Вы выделяете стурктуру OBJECT через realloc. Но она не POD (plain old data) - там поле url - объект std::string. А объекты нельзя вот так выделять. Надо чтобы обязательно конструктор отработал. Вообще, конечно, есть способ извратиться и вызвать конструктор руками, но это костыль.

    Вы тут намешали вещи из C++ (объекты) и вещи из C (malloc) - и это все вместе не работает.

    Правильное решение будет создавть объект через new:
    brick = new Object[brickLength];

    Не забудьте только в конце отчистить это все через delete[].

    А еще лучше, используйте std::vector<Object>.
    Ответ написан
    1 комментарий