gpt4 book ai didi

objective-c - NSArray 上的 "attempt to create a temporary id buffer which is too large or with a negative count"NSGenericException?

转载 作者:行者123 更新时间:2023-12-03 16:11:43 24 4
gpt4 key购买 nike

我有以下几行代码( a1a2 的类型为 NS{Mutable,}Array):

NSIndexSet *is = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(a1.count, items.count-a1.count)];
[a2 addObjectsFromArray:[items objectsAtIndexes:is]];

根据 Crittercism,第二行以 NSGenericException 崩溃。和消息:
*** attempt to create a temporary id buffer which is too large or with a negative count (18446744073709551556) -- possibly data is corrupt

堆栈跟踪的底部如下所示:
0   CoreFoundation 0x000000018595e084 __exceptionPreprocess + 132
1 libobjc.A.dylib 0x0000000195f940e4 objc_exception_throw + 56
2 CoreFoundation 0x000000018586830c -[NSArray objectsAtIndexes:] + 1124
3 .... line of code for `[a2 addObjectsFromArray:[items objectsAtIndexes:is]]` ...

什么可能导致此崩溃?

如果我尝试创建一个位置或长度为 (NSUInteger)-60 的 IndexSet (可能是异常(exception)中的数字), -initWithIndexesInRange:已经失败(有一个不同的异常(exception))。我尝试过的其他“不正确”范围也被捕获。

如果我尝试只喂 -objectsAtIndexes:一个无效的指针(例如再次 -60),应用程序崩溃并显示 EXC_BAD_ACCESS崩溃。,不是我看到的异常(exception)。

尝试使用 Google 查找此错误仅显示 1 次命中 - http://www.opensource.apple.com/source/CF/CF-476.14/CFInternal.h (第 564 行)...但是较新版本的 CoreFramework 不再包含该消息(也许它只是被移到了其他地方)。

最佳答案

在编写了一个小程序来迭代可能的位置 + 长度组合之后,结果证明,这个崩溃发生在 length = 1 - location 的任何时候。 .

例如:

NSRange     range = NSMakeRange(50, (NSUInteger)-49);
NSIndexSet *is = [[NSIndexSet alloc] initWithIndexesInRange:range];
NSLog(@"indexSet: %@", is);
(void)[@[@1,@2,@3] objectsAtIndexes:is];

输出:
crash[19549:507] indexSet: <NSIndexSet: 0x7fe698402de0>[number of indexes: 18446744073709551567 (in 1 ranges), indexes: (50-0)]
crash[19549:507] *** Terminating app due to uncaught exception 'NSGenericException', reason: '*** attempt to create a temporary id buffer which is too large or with a negative count (18446744073709551567) -- possibly data is corrupt'
*** First throw call stack:
[...]

关于objective-c - NSArray 上的 "attempt to create a temporary id buffer which is too large or with a negative count"NSGenericException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26549610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com