Какова самая распространенная причина, по которой выбрасывается bad_alloc? - PullRequest
0 голосов
/ 13 июня 2018

Есть ли более частая ошибка, связанная с памятью, которая выдает bad_alloc?Я понимаю, что это означает, что выделение памяти не удалось, но какая самая распространенная ошибка, которая приводит к этому в коде?

1 Ответ

0 голосов
/ 13 июня 2018

РЕДАКТИРОВАТЬ: Другие комментаторы указали несколько интересных сценариев.Я добавляю их в свой ответ для полноты картины.

Случай 1: Недостаточно памяти

Насколько я понимаю, выдается bad_alloc всякий раз, когда операторам new и new [] не удается выделить память для объекта или переменной.Это может произойти, если вы обновили несколько объектов и забыли удалить их до того, как они выйдут из области видимости (т. Е. Ваш код просачивается как сумасшедший).

Случай 2: выделение огромных объемов памяти одним махом

Выделение большого фрагмента памяти, как в случае матрицы двойных чисел 1000 x 1000 x 1000, возможно, завершится неудачей, поскольку для этого требуется один блок из этогоразмер.

Возможно, доступно несколько свободных блоков памяти, но ни один из них не достаточно велик.

Случай 3: Передача недопустимого значения новому []

bad_alloc выдается, если вы передаете отрицательное значение в качестве его параметра.

...