C++ “创建目录”的分段错误`

C++ “创建目录”的分段错误`,c++,ubuntu,gcc,c++17,C++,Ubuntu,Gcc,C++17,我在Ubuntu的QtCreator中使用gcc-9编译以下代码: #include <filesystem> using namespace std::filesystem; int main() { bool any_new_folders = create_directories("aaa"); printf("success"); } 但是,文件夹aaa是在exe文件旁边创建的。exe文件是在主文件夹中的文件夹中创建的 为什么会发生这种情况?我如何解决这个

我在Ubuntu的QtCreator中使用gcc-9编译以下代码:

#include <filesystem>
using namespace std::filesystem;

int main()
{
    bool any_new_folders = create_directories("aaa");
    printf("success");
}
但是,文件夹
aaa
是在exe文件旁边创建的。exe文件是在主文件夹中的文件夹中创建的

为什么会发生这种情况?我如何解决这个问题



逐步执行表明问题发生在
fs\u path.h
(第184行)中名为
的函数中
fs_path.h
是一个标准头文件。

建议首先在调用周围放置一个
try/catch
,不带error code参数的变量可能会导致异常。try-catch不起作用。。。没有例外。然后我将采取的下一步是启动
gdb
(或任何其他调试器),并找出它崩溃的确切位置。您可以尝试使用静态路径(路径类型)而不是
const char*
不确定此功能的无bug实现是如何实现的,它需要
const ref
这一事实意味着它可能在析构函数之前超出范围。但是,由于这真的只是抓救命稻草(我从来没有真正使用过它),我的建议是让
gdb
参与进来。看起来
create_directories()
还没有为黄金时间做好准备。它不仅会在您的系统上崩溃,而且直到几周前发布的版本10.15才在MacOS上实现。@nano,我可能没有说清楚,我妻子说这对我来说是一件很常见的事情:-)我没有把责任归咎于
gdb
,仅仅说明您可能必须使用
gdb
调试代码以了解发生了什么。
bool any_new_folders = create_directories("aaa");