1

Насколько я понимаю, установка /proc /sys /vm /overcommit_memory в 1 должна гарантировать, что malloc всегда будет успешным, и освободить убийцу OOM, если возникнет реальная проблема с памятью.

Мне интересно, что происходит, когда у вас malloc было так много памяти, что вы исчерпали адресное пространство для вашего процесса? Возвращает ли он значение NULL, несмотря на настройку overcommit_memory, или ваш процесс получает сигнал? Или что-то еще целиком?

1 ответ1

1

Malloc должен вернуть NULL и установить errno, если сегмент данных заканчивается (даже при включенном overcommit).

См. Руководство по системному вызову brk(2). Malloc вызывает brk для расширения сегмента данных. brk терпит неудачу и устанавливает errno в ENOMEM, если расширение сегмента завершается неудачно по любой причине.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .