我在我的 iPhone 应用程序中使用 ac lib。c lib 是由我无权访问的人编写的。
但是,我收到对象 0xa6000d 正在被释放但未分配的错误。调试变量截图在这里。
struct GtsMsg 定义为,
struct msg {
int offset;
int dataLength;
u8* data;
cBool expandable;
cBool owned;
u8* mid2key;
};
#define GtsMsg struct msg
void freeMessageData(GtsMsg* msg) {
if (msg == NULL) return;
if (msg->owned) {
if (msg->data != NULL) {
free(msg->data);
}
}
free(msg->mid2key);
memset(msg, 0, sizeof(GtsMsg));
}
malloc_error_break 的断点是free(msg->data) 行。
我添加了检查 if (msg->data != NULL),但它不起作用。有什么方法可以检查 msg->data 或 msg 的内存是否已分配?
您认为 *data = (u8)'\0' 处有什么可疑之处吗?
提前致谢!