Plusieurs couches impliquées ici affectent la réponse.
Si vous supposez un système d'exploitation de mémoire virtuelle moderne, vous ne pourrez pas voir les restes des données d'un autre processus dans les pages que vous allouez.
Lorsqu'un processus est chargé pour la première fois, la table de pages est chargée et potentiellement des cadres de mémoire réelle sont alloués à ces pages. Au minimum, la table de pages ou sa table supplémentaire contiendra une carte de toute la mémoire que le processus peut allouer. C'est également là que la pause initiale du processus, mentionnée ci-dessus, est définie.
Alors que malloc () peut, si le processus est autorisé, entraîner une modification de la pause du processus, en ajoutant plus de pages à une table de page de processus (page supplémentaire) pour satisfaire la demande, l'endroit où un processus peut "obtenir un autre" données de processus est à la couche de mémoire réelle inférieure.
Dans ces deux scénarios, un système d'exploitation moderne qui utilise la pagination de la demande ou l'allocation différée n'alloue pas encore de mémoire physique (trames). Le système d'exploitation ne fait que "prendre des notes" sur la mémoire virtuelle de ce processus considérée comme valide. La mémoire réelle n'est attribuée qu'en cas de besoin.
La mémoire physique ou les trames sont allouées à un processus lorsque la page virtuelle est réalisée et mappée dans une table de pages de processus C'est là que le potentiel d'exposition des données existe. Cela se produit lors d'une erreur de page. L'exposition est due au fait qu'un processus précédent utilisait peut-être cette même trame et que ses données ont été abandonnées ou échangées, pour faire de la place pour la demande de mémoire physique actuelle. Le système d'exploitation doit veiller à ce que les données du processus demandeur soient correctement échangées ou que la trame soit effacée (mise à zéro) avant de reprendre le processus. Ceci est également mentionné ci-dessus comme un problème "ancien mais résolu".
Cela rend quelque peu inutile si la mémoire des autres processus a été «libérée» ou non. Un autre processus "libéré" de la mémoire réside toujours dans les pages affectées à ce processus et ne sont généralement pas mappés jusqu'à la fin du processus car ils seront simplement échangés lorsque la mémoire sera faible ou qu'ils seront autrement expulsés. malloc () et free () gèrent la mémoire virtuelle affectée au processus au niveau (utilisateur).
Dans votre question, votre processus, continue de demander de plus en plus de mémoire, en théorie, poussant tous les autres processus hors de la mémoire. En réalité, il existe des stratégies d'allocation de trames - mondiales et locales - qui peuvent également affecter la réponse. Il est tout aussi probable que le processus force ses propres pages à manquer de mémoire avant de pouvoir dépasser le système d'exploitation et tous les autres processus. Bien que cela dépasse votre question initiale.
Tout cela est théorique dans un système comme MS-DOS. MS-DOS (et d'autres systèmes plus simples) n'utilisent pas de mémoire virtuelle (par eux-mêmes) et vous pouvez facilement piquer et produire d'autres données de "processus".
Quelques bonnes références, qui peuvent être plus faciles à comprendre que le code source Linux, seraient un bon manuel de systèmes d'exploitation, Operating Systems Concepts par Silberscatz, Gavin et Gange, ou Operating Systems Design par Andrew Tanenbaum. Quelque chose comme Nachos de Berkeley ou Pintos de Stanford sont de petits systèmes d'exploitation conçus pour l'apprentissage et qui contiennent ces mêmes idées.