#cpp #исключения #gcc
Почему следующая программа выбрасывает исключение std::bad_alloc? int main() { std::vectordelimiters = {",", ";"}; std::cout << delimiters[0]; }
Ответы
Ответ 1
У Вас очень занятный пример получился. Вот в этой строчке: std::vectordelimiters = {",", ";"}; происходит попытка создать вектор из двух итераторов, т.к. это единственный подходящий конструктор, который компилятору удаётся распознать в этой инициализации: {",", ";"}. Т.к. компилятор считает, что ему дают 2 итератора, то он и пытается с ними работать, но на деле это 2 независимых указателя, работа с которыми даёт неопределённое поведение! Вот поэтому Вы и видите исключение. Компилятор, скорее всего, честно вычел из второго указателя первый, получил какое-то огромное число, попытался выделить и получил std::bad_alloc. Ответ 2
Потому что вы говорите о char, а передаете строки... std::vectordelimiters = {',', ';'};
Комментариев нет:
Отправить комментарий