Поскольку malloc
- это просто библиотечная функция, это зависит от вашей реализации malloc
. Но нет системного вызова, который он может использовать для получения доступа к страницам, принадлежащим другому процессу, если только этот другой процесс не сделал что-то, чтобы дать вам доступ к ним.
Типичные реализации malloc
получают свои страницы либо с помощью sbrk
либо путем отображения /dev/zero
, которые дают только обнуленные страницы. Если вы получаете ненулевые страницы от типичного malloc
, это будет только потому, что ваш процесс поместил в них что-то.
Если бы у одного процесса был какой-то способ получить доступ к удаленным страницам другого процесса, каждый процесс должен был бы обнулить свои страницы перед тем, как их отбрасывать, и возможны всевозможные атаки, когда вы вызываете сбой процесса, а затем пытаетесь получить его сброшенный страницы. Гораздо больше смысла просто не дать одному процессу получить ненулевые страницы, которые были в последний раз изменены другим процессом, если только этот первый процесс специально не запрашивал такое поведение.