gpt4 book ai didi

c++ - 将 void* 内容复制到 SigLib struct SLData_t*

转载 作者:行者123 更新时间:2023-11-28 07:11:56 24 4
gpt4 key购买 nike

我正在使用 C++ 开发 Windows 应用程序。我有下一个家伙。

我有这个功能,我收到一个带有数据音频捕获的 void *:

void Pre_proc_mono::PreProcess(void *data, int lenbytes) {
SLData_t *signal1;
SLData_t *signal2;
SLData_t *result;
signal1 = (SLData_t*)data;
signal2 = new SLData_t[lenbytes];
result = new SLData_t[2 * lenbytes - 1];

for (int i = 0; i < lenbytes; i++){
signal2[i] = signal1[i];
}
}

循环总是在 11000 左右失败,为什么?我究竟做错了什么 ?然后与 SigLib 库(DSP 库)进行相关交叉。所以我需要有限制的数组,而不是指针,所以我改为这样做。帮忙?

编辑:首先,当我说失败时,我想说当循环达到大约 11000 时出现运行时错误。第二个SLData_t是SigLib库的一种数据,做相关交叉的函数需要这个变量作为输入。

最佳答案

以下内容可能会有所帮助:

void Pre_proc_mono::PreProcess(void *data, int lenbytes) {
SLData_t* signal1 = reinterpret_cast<SLData_t*>(data);
const std::size_t signalCount = lenbytes / sizeof (SLData_t);
// then if you want to copy inside a std::vector
std::vector<SLData_t> signal2(signal1, signal1 + signalCount);
}

关于c++ - 将 void* 内容复制到 SigLib struct SLData_t*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20838389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com