我正在尝试一些事情,但遇到了这个小障碍。为什么我会在这种情况下得到 segault ?
int main()
{
int col_num,row_num=0;
FILE *f = fopen("db.csv", "w+");
int row_max = 10000;
int col_max = 10000;
!!!row_num & col_num is determined due to time!!!
int end_matrix[row_num][col_num];
for(int row=0;row!=row_max;row++){
for(int column=0;column!=col_max;column++){
end_matrix[row][column] = row*column;
}
fprintf(f,"\n");
}
fclose(f);
}
最佳答案
您正在使用 C99 可变长度数组功能来定义 end_matrix
的大小。不幸的是,row_num 和 col_num 都为零,这意味着两个“维度”都没有分配任何存储空间。当您尝试写入数组时,由于没有为其保留存储空间,因此您的写入超出了末尾并触发了未定义的行为,表现为段错误。
看起来您已将 row_max
和 col_max
定义为常量;也许您打算在定义 end_matrix
时使用它们而不是 row_num
和 col_num
。
关于c - 少量代码中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55432655/