Спасибо! Люди на форумах и в блогах действительно говорят, что и в Linux, и в Windows страницы памяти зануляются перед передачей другому процессу. Но я не смог найти никаких "официальных" подтверждений этому (скажем, статей на kernel.org или MSDN). Подскажите, пожалуйста, где можно найти системное изложение темы? Хочется иметь какое-то подобие документации, с которой можно сверяться и на которую можно ссылаться.
Не специалист, но сделаю предположение. Ваш процесс рано или поздно завершится, и его место в оперативной памяти сможет занять кто-то другой, и он сможет читать данные, оставшиеся "по наследству". От этого, думаю, и защищаются.
Согласен, в реальном коде действительно нужно делать так. В синтетическом примере просто не хотелось плодить лишних сущностей, заметка все-таки про другое.
Вы правы, ничего удивительного и неожиданного при ближайшем рассмотрении действительно нет, но именно на практике такой эффект я наблюдал впервые. Как-то не задумывался до этого, что добавление новых функций в публичный интерфейс абстрактного класса может все сломать. Все же это не самый частый кейс, и получить реальную багу таким образом сложновато.
Спасибо! Люди на форумах и в блогах действительно говорят, что и в Linux, и в Windows страницы памяти зануляются перед передачей другому процессу. Но я не смог найти никаких "официальных" подтверждений этому (скажем, статей на kernel.org или MSDN). Подскажите, пожалуйста, где можно найти системное изложение темы? Хочется иметь какое-то подобие документации, с которой можно сверяться и на которую можно ссылаться.
Не специалист, но сделаю предположение. Ваш процесс рано или поздно завершится, и его место в оперативной памяти сможет занять кто-то другой, и он сможет читать данные, оставшиеся "по наследству". От этого, думаю, и защищаются.