我遇到一个很奇怪的错误,无法绕开我的头。

这是我的代码,非常简单,我只在主要调用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将解决此问题。

10-07 19:10
查看更多