Aquí hay varias capas involucradas que afectan la respuesta.
Si asume un sistema operativo de memoria virtual moderno, no podrá ver los restos de los datos de otros procesos en las páginas que asigne.
Cuando se carga un proceso por primera vez, se carga la tabla de páginas y potencialmente se asignan marcos de memoria real a esas páginas. Como mínimo, la tabla de páginas o su tabla complementaria contendrá un mapa de toda la memoria que el proceso puede asignar. Aquí también se establece la interrupción inicial del proceso, mencionada anteriormente.
Si bien malloc () puede, si se permite el proceso, hacer que cambie el salto del proceso, agregando más páginas a una tabla de página de procesos (página suplementaria) para satisfacer la solicitud, el lugar donde un proceso puede "obtener otro" datos de procesos es La capa de memoria real inferior.
En ambos escenarios, un sistema operativo moderno que utiliza paginación de demanda o asignación diferida, todavía no está asignando memoria física (marcos). El sistema operativo simplemente "toma notas" sobre qué memoria virtual para ese proceso se considera válida. La memoria real se asigna solo cuando es necesario.
La memoria física o los marcos se asignan a un proceso cuando la página virtual se realiza y se mapea en una tabla de página de procesos Aquí es donde existe el potencial de exposición de datos. Esto sucede durante un fallo de página. La exposición se debe a que un proceso anterior puede haber estado usando ese mismo marco y sus datos fueron abandonados o intercambiados, para dejar espacio para la solicitud de memoria física actual. El sistema operativo debe tener cuidado para garantizar que los datos de los procesos solicitantes se intercambien correctamente o que el marco se borre (ponga a cero) antes de reanudar el proceso. Esto también se menciona anteriormente como un problema "antiguo pero resuelto".
Esto hace que sea algo irrelevante si la memoria de otros procesos fue "liberada" o no. La memoria "liberada" de otros procesos aún reside en las páginas asignadas a ese proceso y, por lo general, no se asignan hasta que finaliza el proceso, ya que simplemente se intercambiarán cuando la memoria sea baja o se desalojen de otro modo. malloc () y free () administran la memoria virtual asignada al proceso en el nivel (usuario).
En su pregunta, su proceso, continúa solicitando más y más memoria, en teoría, eliminando todos los demás procesos de la memoria. En realidad, existen estrategias de asignación de marcos, globales y locales, que también pueden afectar la respuesta. Es muy probable que el proceso obligue a sus propias páginas a quedarse sin memoria antes de permitir que se sobrepase el sistema operativo y todos los demás procesos. Aunque esto va más allá de tu pregunta inicial.
Todo esto es discutible en un sistema como MS-DOS. MS-DOS (y otros sistemas más simples) no usan memoria virtual (por sí mismos) y usted podría fácilmente pinchar y pinchar en otros datos de "procesos".
Algunas buenas referencias, que pueden ser más fáciles de entender que el código fuente de Linux, serían un buen libro de texto de sistemas operativos, Conceptos de sistemas operativos de Silberscatz, Gavin y Gange, o Diseño de sistemas operativos de Andrew Tanenbaum. También algo como Nachos de Berkeley o Pintos de Stanford son pequeños sistemas operativos creados para el aprendizaje y tienen estas mismas ideas dentro de ellos.