【发布时间】:2011-12-22 12:47:44
【问题描述】:
假设我将一个指针作为参数发送给另一个程序:
program.exe -mypointer
并尝试在该程序中使用它,它不会工作。经过一些研究(即在 Lounge C++ 处询问),我发现从 Windows 95 开始,您无法访问另一个程序的地址空间。在旧版本的 Windows 中是允许的。我的问题是,为什么微软不允许它?这样做有什么问题或缺点?
P.S 是否仍然可以通过一些变通方法在新版本的 Windows 中做到这一点?
【问题讨论】:
-
好吧,允许任何人访问(意外或目的)允许哪些问题?如果有一个 32 位地址空间(IA-32 没有扩展),可以为程序分配的最大总内存是多少?阅读virtual memory 可能是一个开始......
-
“自从发明了可锁的门,为什么你不能进入邻居的家?”span>
-
我记得在没有内存保护的操作系统上开发软件——每次你运行你试图开发/调试的(仍然有问题的)程序时,你都冒着野指针写入崩溃的风险不仅是您自己的程序,还有其他程序,甚至整个操作系统,都需要硬重启。如果你真的很幸运,你会损坏文件系统驱动程序,这反过来会损坏硬盘驱动器的内容,然后你会丢失正在处理的程序的源代码并且必须重新开始(重新安装后从头开始的操作系统)。美好时光! :)
标签: c++ c windows winapi pointers