我正在使用ARC的Xcode 4.6编程.
我正在使用一组简单的整数,当使用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-array替换了NSMutableArray,并且有很大的改进,但在这部分我使用的是可变长度数组,不能使用简单的c-array.所以我正在尝试使用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是> =容量,我会说这是一个非常安全的猜测.是的,您必须最终手动删除[]您使用new分配的数组.绝对从你发布的这个片段看起来它会泄漏,所以也许你想在上下文中提供更多的代码,比如定义变量的地方(本地或类或任何地方)以及如何访问数据等.
原文地址:https://codeday.me/bug/20190831/1776980.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。