不删除文件时出现分段错误C++; 我有一个用C++编写的程序,它使用了很多“系统”函数来运行我在shell中运行的东西(使用Ubuntu 12.04 32位)。

不删除文件时出现分段错误C++; 我有一个用C++编写的程序,它使用了很多“系统”函数来运行我在shell中运行的东西(使用Ubuntu 12.04 32位)。,c++,shell,ubuntu,segmentation-fault,system,C++,Shell,Ubuntu,Segmentation Fault,System,在“系统”函数中完成的操作将生成几个将被处理的文件。在程序的第二部分,我处理这些文件 当程序结束时,它不会删除那些由“系统”函数生成的文件 当我第一次运行程序时,它运行良好,当我第二次运行时,它在第二部分的给定循环中给我分段错误(内核转储)。每次我尝试运行时,它的迭代次数较少。例如:第一次跑步=跑得很好第二次运行=迭代200中的分段错误(堆芯转储)第三次运行=迭代199中的分段错误(堆芯转储)。然后继续 我解决了在程序每次“运行”结束时删除“系统”函数生成的所有文件的问题 我的问题是……有人知道

在“系统”函数中完成的操作将生成几个将被处理的文件。在程序的第二部分,我处理这些文件

当程序结束时,它不会删除那些由“系统”函数生成的文件

当我第一次运行程序时,它运行良好,当我第二次运行时,它在第二部分的给定循环中给我分段错误(内核转储)。每次我尝试运行时,它的迭代次数较少。例如:第一次跑步=跑得很好第二次运行=迭代200中的分段错误(堆芯转储)第三次运行=迭代199中的分段错误(堆芯转储)。然后继续

我解决了在程序每次“运行”结束时删除“系统”函数生成的所有文件的问题

我的问题是……有人知道为什么会发生这种事吗

编辑*

下面是一些伪代码的例子…不幸的是我不能把整个代码,它像600行

int main(void){

// Part 1 of the program.....severam "system" producing files
system("bash produceSeveralFiles.sh");

// Part 2 of the program......process files produced in part 1
processFiles();

// My Solution that i dont know why solves it
system("rm AllFiles");

return 0;
}
编辑*

我检查过它直到循环

for(int i = 0; i < 300 ; i++){
  printf("\n%d",i);
  ...//a few code here
  printf("\n%d",i);
}
for(int i=0;i<300;i++){
printf(“\n%d”,i);
…//这里有一些代码
printf(“\n%d”,i);
}
第二次运行我看到“i”一直到200…第三次运行我看到“i”一直到199…然后继续…这就是我检查分段核心(转储)的方式

编辑*

哦,我现在很惭愧,只是检查了在程序之前生成文件的旧脚本,它给出了相同的问题……如果我在单独的文件中生成,然后只在程序中运行“processFiles()”,它给出了相同的错误。旧的脚本最后有一个“rm files”命令,这并不重要。(thx to user@beta…刚刚检查了旧脚本以引起您的评论)


嗯……但无论如何,问题还在继续,但现在我知道这不仅仅是“系统”功能。

不是没有源代码。您使用core来查看哪行代码seg出现故障?第二次运行如何更改文件?如果在命令行上执行
produceSeverfiles.sh
,会导致错误吗?如果没有,请从程序中删除该调用,并让程序运行
processFiles()
,然后查看是否导致错误。只要这么多,搜索空间就会减少一半;这很不清楚,但听起来好像您已经验证了该循环中的
processFiles()
中发生了segfault。好的现在,简化代码,直到您发现错误,或者找到可以发布的错误。-->如果在命令行上执行produceSeverFiles.sh,会不会导致错误?