我正在尝试使用堆上一段内存的前几个字节来存储使用C语言(而不是C ++)的段内存的元数据。
使用以下命令创建堆空间:
char* start_mem = (char*)malloc(10*sizeof(char)); //10 bytes of memory
现在,我正在尝试在分配的堆空间的前4个字节中放置一个'meta'结构。
typedef struct{
int test;
}meta_t;
这是一个测试代码,用于在更大的代码中实现之前了解如何操作。
test #include <stdio.h>
typedef struct{
int test;
} meta_t;
int main(void) {
char* start_mem = (char*)malloc(10*sizeof(char));
meta_t meta;
meta.test = 123;
return 0;
}
旁注:为什么这种类型的演员有效:
int test = 123;
char c = (char) test;
但是这种类型的演员没有?:
meta_t meta;
meta.test = 123;
char c = (char) meta;
主要问题是如何在start_mem的开头将'meta'数据类型(4个字节)放入四个char大小(1个字节)的空格中?
仅供参考 - 这是数据结构类中较大项目的一小部分。话虽如此,没有必要回答“你为什么还要费心去做?”或者“你可以使用function_abc()并做同样的事情。”已经设置了限制(即单次使用malloc()),我想跟随它们。