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]);
}
对于项目分配,我有一个未分配的原型函数的以下变量。
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]);
}