首页 > 解决方案 > 专有库返回 seg.fault

问题描述

我有一个专有库,可以说是 libX。

libX 是一个语音识别,并具有写入 wav 的功能(在我的情况下是 pcm)。

让我们 libX 编写的函数有这样的定义:

void Write
(
    FILE * const p,
    const float * const * const buffer,
    const float range,
    const size_t frameToBeWritten,
    size_t * const frameWritten
);

我已经设法填充了一个浮点 ** 的缓冲区,但是我仍然遇到分段错误。

我的问题如何解决这个问题。

我有这个函数的一个工作示例,但是该示例对实现不公平,使用函数 PrintArray 检查了 gdb,因为我调查了工作示例 float ** 是如何被填充的:

void PrintArray(float ** a,int channels,int buffer_length){
      int i;
      int j; 
        for (i=0; i<channels; i++)
        {
            printf("===========================");
            printf("Channel %d \n",i);
            for (j=0; j<buffer_length; j++)
            {
                printf("%f  ", a[i][j]);
            }
            printf("\n");
        }
}

在我的代码和示例代码中,数组都被正确填充我找不到我的 float ** 和工作示例 float ** 之间的任何差异

更多代码请参考:Filling up float ** from int16_t *

标签: cbuffer

解决方案


推荐阅读