我有一个 struct meta
,我在 malloc 的开头插入其中一个:
void *ptr = malloc(sizeof(meta) + sz);
struct meta meta1;
meta1.size = sz;
//Which is better?
//memmove(ptr, &meta, sizeof(meta));
//ptr = meta;
稍后,我想访问我的元结构。我试过做:
*((struct meta*) (ptr - sizeof(m61_meta))).size;
其中,将地址移回 malloc 的“开始”,将指针转换为元指针,然后获取大小。但是,我有一个编译时错误,说它不是一个结构。
为什么我会收到此错误,如果您知道更好的方法,那就太好了。
编辑:我正在尝试将“元数据”放入我的指针中。所以基本上:
memory
[meta|data]
A B
内存只是一个malloc。我保留数据 (B) 的指针,稍后,我尝试访问数据的“元”。那是,
(ptr - sizeof(m61_meta))
这是我的memory
块的开始。我想从这里访问我的元数据。不幸的是,将我的A
指针转换为struct meta
指针失败。