下面的代码在 GCC 4.2 上运行得很好,但在 LLVM GCC 4.2 中因 EXC_BAD_ACCESS 而失败
- (double_t)readDouble {
double_t *dt = (double_t *)(buffer+offset);
double_t ret = *dt; // Program received signal: EXC_BAD_ACCESS
offset += 8;
return ret;
}
我就是这样分配的
int dataLength = [data length];
buffer = malloc(dataLength + 1);
buffer[dataLength] = 0; // null terminate to log
[data getBytes:(void *)buffer length:[data length]];
//NSLog(@"%s", buffer);
偏移量和缓冲区就像
@interface PRDataSet : NSObject {
NSMutableArray *tables;
NSMutableDictionary *tablesByName;
NSMutableDictionary *tablesById;
@private
NSURLConnection *conn;
int offset;
char *buffer;
}
是的,偏移量在范围内。在使用缓冲区之前,我不会释放它。
有任何想法吗?