【发布时间】:2013-12-30 11:15:43
【问题描述】:
我正在使用 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 库的一种日期,做相关交叉的函数需要这个变量作为输入。
【问题讨论】:
-
您需要提供有关“失败”、“11000”和 lenbytes 值的更多信息。
-
什么是
SLData_t,为什么你将lenbytes(建议“以字节为单位的长度”)视为项目的长度。 -
由于数组索引 i 超出 (void*) 数据的范围,可能会发生故障。在使用它之前还要检查它是否为空(尽管在这种情况下它应该在第一次访问时失败,而不是 11000)。
-
等一下,如果我正确地用 Google 搜索(浮动或双精度)和
intlenbytes,你有SLData_t这可能是 4-8 个字节。
标签: c++ windows signal-processing