c ++ fgets分段错误(核心转储)
c++ fgets Segmentation fault (core dumped)
包含以下代码片段的完整代码集编译无任何错误。但是,当我 运行 可执行文件时,我在执行第 401 行时收到错误 "Segmentation fault (core dumped)"。
我做了一些调试,我知道 "real" 文件名在第 397 行被调用,我已经确认 "cur_step_buff" 是 4096。
此外,如果需要更多代码来帮助解决此问题,请告诉我。
代码如下:
393: FILE *fd;
394: char fd_name[512];
395: strcpy(fd_name,npb_list[freq][app][thread].file_name);
396: fopen( fd_name, "r");
397: cout << "fd_name = " << fd_name << "\n";
398: char cur_step_buff[4096];
399: cout << sizeof(cur_step_buff) << "\n";
400: cout << “location line 400\n”;
401: fgets (cur_step_buff, sizeof cur_step_buff, fd);
402: int isEnd=0;
403: int last_step=0;
您可能打算将某些内容分配给 fd
。可能是fopen(fd_name, "r");
的结果
原来 fd/fopen 没有在第 396 行初始化
下面修改后的代码允许我的程序 运行:
代码如下:
393: FILE *fd;
394: char fd_name[512];
395: strcpy(fd_name,npb_list[freq][app][thread].file_name);
396: fd = fopen( fd_name, "r"); // <<- change made to this line
397: cout << "fd_name = " << fd_name << "\n";
398: char cur_step_buff[4096];
399: cout << sizeof(cur_step_buff) << "\n";
400: cout << “location line 400\n”;
401: fgets (cur_step_buff, sizeof cur_step_buff, fd);
402: int isEnd=0;
403: int last_step=0;
包含以下代码片段的完整代码集编译无任何错误。但是,当我 运行 可执行文件时,我在执行第 401 行时收到错误 "Segmentation fault (core dumped)"。
我做了一些调试,我知道 "real" 文件名在第 397 行被调用,我已经确认 "cur_step_buff" 是 4096。
此外,如果需要更多代码来帮助解决此问题,请告诉我。
代码如下:
393: FILE *fd;
394: char fd_name[512];
395: strcpy(fd_name,npb_list[freq][app][thread].file_name);
396: fopen( fd_name, "r");
397: cout << "fd_name = " << fd_name << "\n";
398: char cur_step_buff[4096];
399: cout << sizeof(cur_step_buff) << "\n";
400: cout << “location line 400\n”;
401: fgets (cur_step_buff, sizeof cur_step_buff, fd);
402: int isEnd=0;
403: int last_step=0;
您可能打算将某些内容分配给 fd
。可能是fopen(fd_name, "r");
原来 fd/fopen 没有在第 396 行初始化
下面修改后的代码允许我的程序 运行:
代码如下:
393: FILE *fd;
394: char fd_name[512];
395: strcpy(fd_name,npb_list[freq][app][thread].file_name);
396: fd = fopen( fd_name, "r"); // <<- change made to this line
397: cout << "fd_name = " << fd_name << "\n";
398: char cur_step_buff[4096];
399: cout << sizeof(cur_step_buff) << "\n";
400: cout << “location line 400\n”;
401: fgets (cur_step_buff, sizeof cur_step_buff, fd);
402: int isEnd=0;
403: int last_step=0;