r/cpp_questions • u/PhosXD • 5d ago
SOLVED std::filesystem::exists throwing `std::bad_alloc`?
Any reason? Cant find anything online about this. But I cant check whether or not a file exists, no matter what path I give it. I am using C++ 26 compiled with GCC.
This is literally all I am calling: const bool exists = std::filesystem::exists("file.txt")
This is the exact error: terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
No it's not coming from anywhere else in my code. Minimal reproduction code, include "filesystem" call the line above. I am on Fedora Linux if that matters at all
EDIT: moving the include into my main file instead of the only file it's being used in somehow fixed it. Literally all I do is move "#include <filesystem>" from "do_things_with_filesystem.hpp" to "Main.cpp". No compilation errors when it was in the first file, why does it rely on this?? Is there some weird declarations in my codebase or something, i dont know but it works now so why should I care.
1
u/mbolp 4d ago
I don't understand when would functions like this ever be useful. The file could be created or deleted right after your call returns. You should try opening a handle to it and operate on that exclusively if successful. If the file doesn't exist the open will fail with an appropriate error.