Поведение нормальное. Цитирование man 3 malloc
:
ОШИБКА
По умолчанию Linux следует оптимистичной стратегии выделения памяти. Это означает, что когда malloc () возвращает не NULL, нет гарантии, что
память действительно доступна. Это действительно плохая ошибка. Если окажется, что системе не хватает памяти, один или несколько процессов будут
убит печально известным убийцей ООМ. В случае, если Linux используется в условиях, когда было бы менее желательно внезапно потерять некоторые из них
выбранные процессы, и, кроме того, версия ядра достаточно свежая, можно отключить это чрезмерное выполнение, используя команду типа:
# echo 2 > /proc/sys/vm/overcommit_memory
См. Также каталог документации ядра, файлы vm / overcommit-accounting и sysctl / vm.txt.
Вам нужно потрогать (прочитать / записать) память ядра Linux, чтобы фактически зарезервировать ее.