编辑: 这是程序的要点
我对此完全感到困惑,这是我的主要程序:
NSString* binPath = [NSHomeDirectory() stringByAppendingString:@"/Documents/BPlusTree/BinaryCodeIndex.bin"];
CMCodeIndex* index = [[CMCodeIndex alloc] initWithFile:binPath];
header* h = [index header];
NSLog(@"%hd, %hd, %hd, %hd, %hd", h->m, h->r, h->e, h->f, h->k);
CMCodeIndex 类所做的只是从二进制文件中读取 5 个短值。它存储在类内部的结构中。然后我得到一个指向结构的指针并打印出值。
如果我正常运行程序,我会得到意外的输出:27728、29557、29268、25957、26157
不是标题值。但是当我在行中断header* h = [index header];
并使用 lldb 直到打印语句时,我得到正确的值:7、56、58、11、239
这里发生了什么?我认为问题在于返回指向结构的指针和被覆盖的内存中的相关区域,但我不确定。我该如何解决它并且仍然继续返回指针而不是结构的副本?