0

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

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

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

现在考虑以下场景:

  1. 用户启动 MyApp。
  2. 用户关闭 MyApp。
  3. 用户启动 SomeOtherApp。

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

或者 RAM 的内容是否被视为应用程序运行的沙箱的一部分?

4

1 回答 1

-1

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

引用关于 ARC 的教程:

“启用自动引用计数后,编译器将自动在程序中的正确位置插入保留、释放和自动释放。您不再需要担心这些,因为编译器会为您完成。”

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

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

如果安全性是一个大问题,那么请确保所有分配的内存都在您的代码中正确释放。然后确保你对内存泄漏和诸如此类的东西进行了大量的测试,以确保没有对象留下一些内存。

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

如果我说错了,有人打我。

于 2013-07-18T02:36:51.433 回答