将void *内容复制到SigLib中struct SLData_t *

我正在做一个使用C ++的Windows应用程序。 我有下一个哥们。

我有这个function,我收到数据audio捕获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库的一种date,做相关交叉的函数需要这个variables作为input。

Solutions Collecting From Web of "将void *内容复制到SigLib中struct SLData_t *"

以下可能有助于:

 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); } 

这可以使用std::vector而不是手动内存管理和std::copy()更好,安全和简单地实现:

 void Pre_proc_mono::PreProcess(void *data, std::size_t lenbytes){ SLData_t *signal1 = (SLData_t*)data; std::size_t data_length = lenbytes / sizeof( SLData_t ); std::vector<SLData_t> signal2; std::vector<SLData_t> result; std::copy( std::begin( signal1 ) , std::end( signal1 ) + data_length , std::back_inserter( signal2 ) ); }