包含以下代码段的完整代码集可以编译出任何错误。但是,当我运行可执行文件时,我收到错误"分段错误(核心转储)"当执行第401行时。
我做了一些调试,我知道"真实"第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;
答案 0 :(得分:0)
您可能打算将某些内容分配给fd
。可能是fopen(fd_name, "r");
答案 1 :(得分:0)
事实证明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;