问题描述
|
我很确定KER_PROTECTION_FAILURE由于以下代码而发生。
(当我跳过调用此函数时,我没有收到错误)
我怀疑以下代码是错误的吗? (数据可以在释放字符串对象之前消失,或类似的东西)
NSMutableData* data = [NSMutableData dataWithLength: dataLength];
// populate data
return [[[Nsstring alloc] initWithData:data encoding:NSASCIIStringEncoding] autorelease];
寄存器$ r0显示返回的Nsstring对象的地址。
$ r1显示\“ release \”。
- (Nsstring *)encode:(const uint8_t *)input length:(NSInteger)length {
static char table[] = \"ABCDEFGHIJKLMnopQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";
int dataLength = ((length+2)/3)*4;
int remainder = dataLength % 16;
dataLength = dataLength + (16- remainder);
NSMutableData *data = [NSMutableData dataWithLength:
dataLength];
uint8_t *output = (uint8_t *)data.mutableBytes;
for (NSInteger i = 0; i < length; i += 3) {
NSInteger value = 0;
for (NSInteger j = i; j < (i + 3); j++) {
value <<= 8;
if (j < length) {
value |= (0xFF & input[j]);
}
}
NSInteger index = (i / 3) * 4;
output[index + 0] = table[(value >> 18) & 0x3F];
output[index + 1] = table[(value >> 12) & 0x3F];
output[index + 2] = (i + 1) < length ? table[(value >> 6) & 0x3F] :
\'=\';
output[index + 3] = (i + 2) < length ? table[(value >> 0) & 0x3F] :
\'=\';
}
return [[[Nsstring alloc] initWithData:data
encoding:NSASCIIStringEncoding]
autorelease]; }
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)