通过C中的void指针传递结构

时间:2012-05-22 18:58:16

标签: memory pointers struct allocation void

我正在尝试实现ARM / DSP共享内存通信。 ARM端将一块数据放在共享存储器上(让我们将其命名为array []),并将块的地址和大小发送到只读取它们的DSP端。 在DSP方面,

void * buf //address of block on shared memory
int length //size of block

然而,当我尝试阅读它们时,实际上是:

buf[0] = length
buf[1] = array[1]
buf[2] = array[2]
buf[3] = array[3]
    :
    :
    :

看起来好像长度变量超出了数组的第一个单元格(这有点奇怪),或者我错误地使用了void指针。 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为,该数据结构是:

buf[0] = length
buf[1] = array[0]
buf[2] = array[1]
:
buf[length] = array[lenght-1]

你必须为lenght + 1

保留buf