Мой код ниже продолжал работать с ошибкой ошибки сегментации, и я не могу понять, почему.Помогите pls ~~ Моя цель - прочитать папку и все ее подпапки, чтобы найти все файлы, заканчивающиеся расширением ".txt", поэтому я использую итератор директивы recurisve для ускорения этой задачи.Эта проблема возникла неожиданно, так как мой код работал нормально на прошлой неделе.
test.cpp:
#include <sstream>
#include <iostream>
#include "/home/dj/boost_1_65_1/boost/filesystem.hpp"
using namespace std;
int main()
{
using namespace boost::filesystem;
recursive_directory_iterator end;
for (recursive_directory_iterator it("./"); it != end; ++it)
{
std::cout << *it << endl;
}
return 0;
}
Я работаю в Linux, и я компилирую свой test.cpp с надписью boost 1.65 как статический:
g++ -g -I /home/dj/boost_1_65_1 test.cpp -static -static-libgcc -o delete -static-libstdc++ -std=c++11 -L/home/dj/boost_1_65_1 -lboost_filesystem -lboost_system
с GDB и некоторым cout, я обнаружил, что ошибка пришла из строки ниже.
for (recursive_directory_iterator it("./"); it != end; ++it)
каким-то образом, когда я вызываю "recursive_directory_iterator", моя система падает, выдавая эту ошибку
Program received signal SIGSEGV, Segmentation fault.
0x00000000004f1c8b in memcpy ()
точно такая же ошибка сохраняется, даже если я уменьшу код до
int main()
{
using namespace boost::filesystem;
recursive_directory_iterator it("./");
return 0;
}