Здесь есть несколько слоев, которые влияют на ответ.
Если вы предполагаете использовать современную операционную систему виртуальной памяти, вы не сможете увидеть остатки данных других процессов на страницах, которые вы выделяете.
Когда процесс загружается впервые, таблица страниц загружается, и потенциально страницы этой памяти выделяются кадры. Как минимум, таблица страниц или ее дополнительная таблица будет содержать карту всей памяти, которую может выделить процесс. Здесь также устанавливается начальный останов процесса, упомянутый выше.
Хотя malloc () может, если процесс разрешен, изменить прерывание процесса, добавив больше страниц в таблицу страниц процесса (дополнительную страницу) для удовлетворения запроса, место, где один процесс может «получить другой» данные процесса, находится в нижний слой реальной памяти.
В обоих этих сценариях современная операционная система, использующая разбиение на страницы по требованию или отложенное распределение, еще не выделяет физическую память (кадры). Операционная система просто «делает заметки» о том, какая виртуальная память для этого процесса считается допустимой. Фактическая память назначается только при необходимости.
Физическая память или кадры выделяются процессу, когда виртуальная страница реализована и отображается в таблицу страниц процессов. Здесь существует потенциальная возможность раскрытия данных. Это происходит во время ошибки страницы. Это связано с тем, что предыдущий процесс мог использовать этот же кадр, а его данные были либо заброшены, либо заменены, чтобы освободить место для текущего запроса физической памяти. Операционная система должна быть осторожна, чтобы гарантировать, что данные запрашивающих процессов правильно заменены или кадр очищен (обнулен) перед возобновлением процесса. Это также упоминалось выше как «старая, но решенная» проблема.
Это делает его несколько неактуальным, если память других процессов была «освобождена» или нет. «Освободившаяся» память других процессов по-прежнему находится на страницах, назначенных этому процессу, и обычно не отображается, пока процесс не завершится, поскольку они просто будут выгружены, когда память будет заполнена или они будут выселены иным образом. malloc () и free () управляют виртуальной памятью, назначенной процессу на уровне (пользователя).
В вашем вопросе ваш процесс продолжает запрашивать все больше и больше памяти, теоретически вытесняя все другие процессы из памяти. В действительности, существуют стратегии распределения кадров - глобальные и локальные - которые также могут повлиять на ответ. С большой вероятностью процесс вытеснит свои собственные страницы из памяти, прежде чем ему будет разрешено переполнение операционной системы и всех других процессов. Хотя это выходит за рамки вашего первоначального вопроса.
Все это спорный вопрос в такой системе MS-DOS. MS-DOS (и другие, более простые системы) не используют виртуальную память (сами по себе), и вы можете легко тыкать и подталкивать другие «обрабатывающие» данные.
Некоторые хорошие ссылки, которые, возможно, будет легче понять, чем исходный код Linux, могут быть хорошим учебником по операционным системам, «Концепции операционных систем» Silberscatz, Gavin и Gange или «Дизайн операционных систем» Эндрю Таненбаума. Кроме того, что-то вроде Nachos из Беркли или Pintos из Stanford - это небольшие операционные системы, созданные для обучения, и в них заложены те же идеи.