程序是否可以直接访问另一个程序的内存并从中读取(或写入)内容,或者“继承”从另一个程序回收的旧内存内容?(即,如果它在使用内存之前没有将其清零,而是直接从未初始化的内存中读取)
答案1
从 Windows XP 开始,所有主流操作系统都具有这种内存保护。一个程序将无法写入另一个程序的内存。
程序可能会“回收”从另一个程序中取消分配的内存,但它不会拥有先前存储在其中的信息。
答案2
我没有为 Vista 或 Win7 编写过代码,但我无法想象他们的开发工具箱不包含某种类型的共享内存机制。
答案3
我不太确定 Windows 7 是否实现了内存保护,因为我们可以看到人们能够破解游戏(例如暗黑破坏神 2)甚至用 VB2008 开发的程序来更改其变量的内容。我在用 Visual Basic 2008 编写的程序上进行了测试,并尝试使用“Cheat Engine 5.6”更改其变量的内容。成功了。所以我猜 Windows 7 要么根本没有实现内存保护,要么默认情况下禁用了内存保护。