【问题标题】:Getting an error for no reason I can comprehend无缘无故出错,我无法理解
【发布时间】:2010-12-29 21:39:24
【问题描述】:

我点击了equals,它运行所有代码并清楚地到达终点,运行它并到达终点并NSLogs它。在这一点上,它已经没有什么可做的了......期望无缘无故地给我一条错误消息,知道为什么吗? 谢谢!

-(IBAction) clickEquals: (id) sender {
    // more stuff is actually insider here, omitted for brevity.
    [self clear];
}

- (void)clear {
    // more stuff is actually insider here, omitted for brevity.
    [accumulator clear];
    NSLog(@"clear - done");
}

控制台

2010-12-29 15:24:38.328 应用程序[6150:207] 清除 - 完成

app(6150,0xa01e7540) malloc: * * * 错误 对于对象 0x7146840:指针正在 freed 未分配 * * * 在 malloc_error_break 中设置断点进行调试

(gdb)

【问题讨论】:

  • 从你粘贴的代码 sn-ps 很难看出。如果您能够提供重现错误的最小测试用例,您可能会得到准确的答案。
  • 你知道错误信息是什么意思吗?

标签: objective-c malloc


【解决方案1】:

app(6150,0xa01e7540) malloc: * * * 对象 0x7146840 的错误:指针 未分配被释放 * * * 在 malloc_error_break 中设置断点 调试

您的程序导致某些从未分配过的东西被释放。很可能是因为一个垃圾指针被传递给了free(),可能是因为您忘记初始化某些东西,或者可能是因为您的应用程序正在破坏内存。

无论如何,请按照说明在malloc_error_break 上设置断点并发布回溯。

很有可能,原因在于 // 更多内容实际上是这里的内部信息,为简洁起见省略。 位或 [accumulator clear] 方法中。

【讨论】:

  • 谢谢!发现错误,我正在自动释放一个我从未为其分配空间的对象。供将来参考:我将在哪里放置断点?我不认识 malloc_error_break。
  • 您将添加一个符号断点;在 Xcode 的断点窗口中或在 GDB 终端窗口中键入 b malloc_error_break
猜你喜欢
  • 1970-01-01
  • 2020-06-25
  • 1970-01-01
  • 2014-05-11
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
  • 1970-01-01
相关资源
最近更新 更多