我遇到一个很奇怪的错误,无法绕开我的头。
这是我的代码,非常简单,我只在主要调用System()的地方调用一个函数
string function1()
{
cout << "Running my script... " << endl;
system ("./myscript.sh");
cout << "Done Running my script... " << endl;
}
int main()
{
cout << "running function" << endl;
function1();
cout <<"done"<< endl;
return 0;
}
它运行的脚本不执行任何操作(以简化问题),只是回显
#!/bin/bash
#UnMount Script
echo "HELLO THERE"
事实是,一旦退出Function(),就会立即给出分段错误!
这是我的输出:
running function
Running my script...
HELLO THERE
Segmentation fault (core dumped)
我一无所知,这是什么原因造成的!
最佳答案
看来问题在于您的function1
声明为返回string
,但未返回任何内容。 C++编译器应该对此发出警告:
warning: control reaches end of non-void function [-Wreturn-type]
函数返回时,调用者需要对函数返回的字符串执行清理操作。由于未返回任何内容,因此这些操作将触发未定义的行为,最终导致分段错误。
添加return语句或将函数声明为
void
将解决此问题。