假设我分配了一些内存。将分配的内存视为不同的类型
char* buffer = (char*)my_malloc(2062);
我将char值赋给前面定义的数组命名头的前14个字节。
memcpy(buffer, header, 14);
然后我想把剩余的分配空间当作指针来浮动。
float* float_buffer = (float*)(buffer + 14);
some_function(float_buffer);
然后在稍后的某个时刻我需要发送所有的数据。
transmit(buffer);
my_free(buffer);
这是治疗记忆的正确方法吗?浮球*投射好吗?我遇到的问题是我正在失去价值,而没有得到正确的结果。 我的问题是: 如果您必须将分配的内存视为不同的类型,但在处理结束时将其作为char *发送.....这是正确的方式吗?
我检查了ptr值,当它们是float *和char *时它们是相同的,但我没有得到正确的结果。
我的一个限制是我最初只能从静态缓冲区分配一块内存。因此,不允许将另一个malloc作为另一个类型(float *)调用。
这听起来像你有一个对齐问题;你能展示预期的结果和你看到的实际错误吗? – 2010-11-30 06:09:34
是的,这是一个对齐问题......我不知道的东西。我可以从这里拿走它。谢谢。 – 2010-11-30 06:46:49