Valgrind 大小为 4 的段错误读取无效

Valgrind Invalid read of size 4 segfault

对于项目分配,我有一个未分配的原型函数的以下变量。

int **suff;

此变量将从函数接收指向数组 (int *) 的指针,该函数将从 FILO 列表(文件)生成 (int) 数组。

(p只是一个内容结构,p->suff是一个文件)

int t = file_size(p->suff);

/* Prototype of file_tabint is
 * int * file_tabint(file *p, int * psize)
 */

// Assign the generated array to the *suff)

  *suff = file_tabint(p->suff, &t);

现在,当我想打印数组时,valgrind 引发“大小为 4 的无效读取”

  for (int i = 0; i < t; i++) {
    printf("%d --  ", *suff[i]);
  }

我的问题是,我为了访问数组的 int 值做错了什么?

注意:我无法更改 int **suff

问题是*suff[i]。运算符优先级的工作方式是先执行 suff[i] 然后取消引用它在那里找到的任何内容。你想反过来做,所以加括号:

  for (int i = 0; i < t; i++) {
    printf("%d --  ", (*suff)[i]);
  }