Нет, это не так просто. :)
Современные операционные системы используют виртуальную память .
Каждому процессу предоставляется полное виртуальное адресное пространство.
Каждый процесс получает свое собственное «представление» всех адресов (от 0x00000000 до 0xffffffff в 32-разрядной системе). Процессы A и B могут выполнять запись по одному и тому же адресу, не влияя друг на друга, поскольку они не обращаются к адресам физической памяти, а к виртуальным адресам. Когда процесс пытается получить доступ к виртуальному адресу, ОС преобразует его в какой-то другой физический адрес, чтобы избежать конфликтов.
По сути, ОС отслеживает таблицу страниц памяти для каждого процесса. Он отслеживает, какие диапазоны адресов были выделены процессу, и какие физические адреса им сопоставлены. Если процесс пытается получить доступ к адресу, который ему не выделен, возникает ошибка нарушения доступа / сегментации. И если вы попытаетесь получить доступ к адресу, который выделен для вашего процесса , вы получите свои собственные данные. Поэтому невозможно прочитать данные других процессов, просто набрав «неправильный» адрес.