Objective C 中的 C++ 数组给出 EXC_BAD_ACCESS

标签 c++ objective-c arrays xcode

我正在使用 Xcode 4.6 为 iOS 和 ARC 编程。

我正在处理一个简单整数数组,当使用 NSMutableArray 时,它在下面的代码中工作正常。

NSMutableArray *_array; // variable
...
_array = [[NSMutableArray alloc] initWithCapacity:capacity]; // allocation 
... 
[_array addObject:[NSNumber numberWithInt:int_number]]; // inserting 
... 
return [[_array objectAtIndex:i] integerValue]; // retrieving

然而,这并没有很好地执行,因为我在数组中进行了很多查找,所有的拆箱和可能的 NSMutableArray 本身有点慢。

在我的代码的其他部分,我用一个简单的 c 数组替换了 NSMutableArray,并进行了很大的改进,但在这一部分中,我使用的是可变长度数组,不能使用简单的 c 数组。所以我正在尝试使用 C++ 数组。在 Xcode 中,我将文件从 .m 重命名为 .mm(以编译为 Objective-C++)并使用下面的代码编译正常但是当它运行时它会导致 EXC_BAD_ACCESS 错误,我找不到原因。我需要在这里进行一些手动垃圾收集吗?

int *_array; // variable
...
_array = new int[capacity]; // allocation
...
_array[i] = int_number; // inserting
...
return _array[i]; // retrieving

最佳答案

我会说这是一个非常安全的猜测,假设您访问了数组之外的元素,即您的 i>= capacity。是的,您最终将不得不手动delete[] 您使用new 分配的数组。从你发布的这个片段来看,它肯定会泄漏,所以也许你想在上下文中提供更多代码,比如定义变量的位置(本地或类中或任何地方)以及如何访问数据等。

关于Objective C 中的 C++ 数组给出 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18302789/

相关文章:

c++ - 编译时是否需要 CUDA 硬件?

ios - 实现 Inneractive/Inneractive 横幅广告 - 广告定位问题

ios - UITableView 数组

c++ - Qt QUrlQuery 参数拆分

c++ - 如何获取CCSprite添加到CCParallaxNode的位置?

c++ 从文本文件中删除行(需要解释)

ios - Swift 的 Obj-c 代码 - NSDateFormatter

objective-c - 支持通过转义键关闭以工作表形式呈现的 NSWindow

java - 为什么下面的代码编译没有错误?

arrays - 检查数组的子数组的所有元素是否不存在于数组的其余部分