Хм, нет.Внутреннее malloc(3)
вызывает brk(2)
, чтобы расширить сегмент данных, если он слишком мал для данного запроса на выделение.Он касается некоторых страниц для своей внутренней бухгалтерии, но, как правило, в этот момент не все выделенные страницы могут быть защищены физической памятью.
Это происходит потому, что многие ОС делают переполнение памяти - обещание приложению того, что оно запрашивало, независимо от доступной физической памяти, в надежде на то, что приложение будет использовать не всю память, что другие приложения освобождают память / завершают работу, и возвращаются к обмену в качестве крайней меры.Скажем, в Linux malloc(3)
почти никогда не происходит сбоев.
Когда на память действительно ссылаются, ядру нужно будет найти доступные физические страницы для ее резервного копирования, создать / обновить таблицы страниц и TLB и т. Д. - нормальная обработка дляошибка страницы.Итак, еще раз, нет, вы не получите никакого ускорения позже, если не зайдете и не дотронетесь до каждой страницы в этом выделенном чанке.
Отказ от ответственности: вышеупомянутое не может быть точным для Windows (поэтому, нет, опять же, ничего близкопортативный.)