【发布时间】:2011-05-17 16:37:53
【问题描述】:
假设我分配了一些内存。
char* buffer = (char*)my_malloc(2062);
我将 char 值分配给之前定义的名为 header 的数组的前 14 个字节。
memcpy(buffer, header, 14);
然后我想把剩余的分配空间当作指向浮动的指针。
float* float_buffer = (float*)(buffer + 14);
some_function(float_buffer);
然后在稍后的某个时候,我需要将所有数据发送出去。
transmit(buffer);
my_free(buffer);
这是处理记忆的正确方法吗? float* 演员可以吗?我遇到了我失去价值并且没有得到正确结果的问题。 我的问题是: 如果您必须将分配的内存视为不同的类型,然后在处理结束时将其作为 char* 发送.....这是正确的方法吗?
我检查了 ptr 值,当它们是 float* 和 char* 时它们是相同的,但我没有得到正确的结果。
我的一个限制是我最初只能从静态缓冲区分配一块内存。因此,不允许将另一个 malloc 调用为不同的类型 (float*)。
【问题讨论】:
-
听起来你有对齐问题;你能展示你看到的预期结果和实际错误吗?
-
是的,这是对齐问题……我不知道。我可以从这里拿走。谢谢。