可能会将内存中的数据从一个ios应用程序泄漏到另一个



前言:我不是iOS开发人员,对iOS安全模型几乎一无所知。所以,如果这个问题真的很愚蠢,请原谅我。:)

考虑一个名为MyApp的应用程序,它在启动时会执行以下操作:

  1. 动态分配一块内存,比如使用malloc()
  2. 通过网络加载一些敏感数据,并将其存储在该内存块中
  3. 坐在那里无所事事

现在考虑以下场景:

  1. 用户启动MyApp
  2. 用户关闭MyApp
  3. 用户启动SometherApp

我的问题是:如果SometherApp也动态分配内存,那么操作系统返回的缓冲区中是否有可能包含MyApp调用(现已关闭)时放置的敏感数据?

还是RAM的内容被视为应用程序运行的沙盒的一部分?

理论上,一旦用户关闭应用程序(你必须确保应用程序关闭,而不仅仅是在后台运行),分配给该进程的内存就会被释放并返回。

引用ARC教程:

启用"自动引用计数"后,编译器将自动在程序中的正确位置插入保留、释放和自动释放。您再也不用担心这些了,因为编译器会为您做这件事。

因此,当应用程序关闭时,对任何具有某种内存分配的对象的所有引用都将被清除,因为当应用程序不运行时,将没有可引用的对象。

我说你必须确保它关闭的原因是,默认情况下,当你按下主页按钮时,一些应用程序不会关闭,但实际上会继续在后台运行。这可能会造成潜在的安全威胁,但可能性不大。为了确保该应用程序没有内存,请确保每次都完全关闭。确保代码做得正确,并且编写代码的人知道并跟踪他分配的内存。

如果安全性是一个大问题,那么请确保所有已分配的内存都能在代码中正确释放。然后确保你做了大量的内存泄漏测试等等,以确保没有对象与一定数量的内存一起躺着。

我只想说,我甚至不是ARC记忆管理的专业人士,所以最好与其他几个来源核实,以确保我的答案是正确的。

如果我说话有误,就会有人打我。

相关内容

最新更新