【问题标题】:What happens if I release a non-allocated object?如果我释放一个未分配的对象会发生什么?
【发布时间】:2011-08-15 22:21:15
【问题描述】:

如果我释放一个未分配的对象会发生什么?

例子:

NSString *value = @"hello World!";

[value release]; 

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    没什么,字符串字面量在内存管理方面很特别。检查this question

    【讨论】:

      【解决方案2】:

      正如 sydill 所说,字符串 literals 是不同的,因为它们不需要分配或释放。

      释放其他未分配的对象 OTOH,以及不是字面量的 NSString,很可能会导致 EXC_BAD_ACCESS 异常。

      【讨论】:

      • 所以可能会导致异常。错误访问异常:在运行时
      • 是的,它很可能会抛出 ECX_BAD_ACC 异常。这在一定程度上取决于指针中的值,这只是未定义的。它很可能是完全垃圾,但碰巧它可能是另一个对象的地址,并且可能会被释放(为时过早,但默默无闻,即没有例外),或者它可能是 nil、NULL,这将导致无操作。这完全取决于堆栈的那部分之前包含的内容。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-08
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 2011-03-19
      • 2011-09-17
      • 2017-02-14
      相关资源
      最近更新 更多