首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将结构数据保存到void*变量

将结构数据保存到void*变量
EN

Stack Overflow用户
提问于 2012-06-16 23:56:09
回答 4查看 327关注 0票数 0

我的工作是在DSP处理器上实现BFSK算法,需要在LINUX上使用预定义的DSP底层文件来模拟实现。输入数据以浮点数组的形式出现。从输入中逐个提取各个比特。在typdef结构的fprm中生成调制输出,该结构由两个浮点变量(实部和虚部,因为调制数据是复数基带信号)组成。但DSP仿真需要将输出保存到空指针数组中。这不能改变,因为DSP需要它以空指针的形式存在。该结构的定义如下:

代码语言:javascript
运行
复制
typedef struct {
float re;
float im;
}complex_float;

我可以使用memcpy将数据复制到空指针中:

代码语言:javascript
运行
复制
sigbuf=(float *)malloc(bitsPerBlk*sigLen*sizeof(complex_float));

memcpy(sigbuf, comSig, (bitsPerBlk*sigLen*sizeof(complex_float)));

comSig是保存输出的空指针数组,complex_float是保存调制输出的sigbuf数组。问题是我不能访问sigbuf数组的个别值。我也试过了

代码语言:javascript
运行
复制
sigbuf=(complex_float *)malloc(bitsPerBlk*sigLen*sizeof(complex_float));

但它仍然不起作用。

如果有人能帮助我,那将对我很有帮助。

谢谢,安舒

EN

Stack Overflow用户

发布于 2012-06-17 08:53:36

确保目标地址sigbuf正确对齐。例如,DSP可能要求4字节浮点值必须在4字节边界上对齐。memcpy()很可能不会检查对齐,并且会毫无错误地复制单个字节。但是,如果sigbuf没有正确的对齐方式,那么您将无法以浮点型的形式访问内容(即,当数据从内存读取到寄存器中时,数据将被损坏)。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11064964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档