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

时间:2013-07-18 02:09:42

标签: ios security sandbox dynamic-memory-allocation ios6

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

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

  1. 动态分配一块内存,比如使用malloc()。
  2. 通过网络加载一些敏感数据并将其存储在该块内存中。
  3. 坐在那里什么都不做。
  4. 现在考虑以下情况:

    1. 用户启动MyApp。
    2. 用户关闭MyApp。
    3. 用户启动SomeOtherApp。
    4. 我的问题:如果SomeOtherApp也动态分配内存,操作系统返回的缓冲区之一可能包含MyApp(现已关闭)调用所放置的敏感数据吗?

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

1 个答案:

答案 0 :(得分:-1)

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

引用ARC的教程:

"启用自动引用计数后,编译器将自动在程序的正确位置插入保留,释放和自动释放。你不再需要担心这一点,因为编译器会为你做这件事。"

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

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

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

我只想说,即使是ARC,我也不是专业的内存管理专家,所以最好先与其他几个来源核实,以确保我的答案是正确的。

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