在程序分配的内存之外进行访问。 (正在访问其他应用程序的内存)

问题描述 投票:-1回答:4

是否有一种方法可以访问(读取或释放)为该程序分配的内存之外的内存块,而不会出现访问冲突异常。除此之外,我实际上想了解的是内存清理器(系统垃圾收集器)的工作方式。我一直想写这样的程序。 (语言不是问题)

提前感谢:)

memory garbage-collection memory-management access-violation
4个回答
1
投票

简单的答案(不要误会我的意思),不。通常,出于两个原因,这不是一个好主意。首先是因为它引起您的程序与其他程序之间的信任问题(更不用说我们人类也不信任您的应用程序)。其次是如果您能够访问其他应用程序的内存并在应用程序不知道的情况下进行更改,则将导致应用程序崩溃(病毒也可以这样做)。

从运行时调用垃圾收集器。运行时“拥有”内存空间,并允许其他应用程序“驻留”在该内存空间中。这就是为什么垃圾收集器可以存在的原因。您将必须创建一个运行时,操作系统将为其分配内存,让运行时在其权限下执行应用程序,并在其权限下使用GC。您将需要允许一些工具或API,使应用程序开发人员可以从您的运行时(而不是OS)“请求”内存,并且您的运行时不仅可以响应此类请求,还可以跟踪它的内存空间分配给该应用程序。您可能需要一个框架(一组DLL),使这些调用可用于应用程序(开发人员将使用它们在应用程序内部形成请求)。

[您必须确保垃圾收集器不会删除正在执行的应用程序使用的内存以外的内存,因为您可能同时在运行时中运行了1个以上的应用程序。

希望这会有所帮助。


4
投票

编号

任何现代操作系统都将阻止一个进程访问属于另一个进程的内存。

实际上,您了解虚拟内存,就知道这是不可能的。每个进程都有自己的虚拟地址空间。


1
投票

实际上正确的答案是肯定的。有一些程序可以做到这一点(如果存在,则意味着有可能...)也许您需要编写一个内核驱动器来完成此操作,但是有可能。

哦,还有另一个示例...调试器附加命令...这是一个程序,它与另一个程序存储器进行交互,即使它们都以不同的进程启动。...

当然-弄乱另一个程序的内存..如果您不知道自己在做什么,可能会使它崩溃...


0
投票

是的,但是缺少对erorr编程的能力,因为在此钻孔机程序p.o.d.i中此时代的L.O.L程序具有L>

© www.soinside.com 2019 - 2024. All rights reserved.