在算法移植到linux时发现在windows下和linux下的结果不一样,经定位发现是由于memcpy函数造成,根本原因是mecpy的源地址和目的地址有部分重叠,在linux下执行memcpy出错,而windows下执行memcpy不出错。
后将memcpy修改成赋值解决了问题。
for(int iii = 0; iii < 2048; iii++)
{
*(lfEnc->pcm_buffer0 - 1024 + iii) = *(lfEnc->pcm_buffer0 + iii);
}
//memcpy(lfEnc->pcm_buffer0 - 1024, lfEnc->pcm_buffer0, sizeof(float) * 2048); //wrong in Linux