Zdravím, mám další problém. Opět. Nějaký ten pátek zpátky jsem řešil iteraci adresáře pomocí Direntu a nyní jsem se rozhodl to přepsat a použít k tomuto úkolu Boost.Filesystem. Problém ale je, že když iteruji větší adresář (v mém případě mojí domovskou složku (/home/zavodnyrichard)), tak mi to vyhodí několik set položek a později hlášku "Aborted (core dumped)".
Tady je kód:
#include <iostream>
#include "boost/filesystem.hpp"
using namespace std;
using namespace boost::filesystem;
int findFiles(char* directory);
int main() {
findFiles("/home/zavodnyrichard");
return 0;
}
int findFiles(char* directory) {
path p(directory);
directory_iterator end_itr;
for(directory_iterator itr(p); itr != end_itr; ++itr) {
string current = itr->path().string();
if(is_regular_file(current)) {
cout << current << "\n";
} else if(is_directory(current)) {
char *directory = new char[current.size()+1];
std::strcpy(directory, current.c_str());
findFiles(directory);
delete[] directory;
}
}
}
Předpokládám, že se mi zaplní paměť a potom to prostě spadne. Dle mého názoru to má co dočinění s tím, že začínám iterovat další adresář (funkce findFiles(directory);) a "nestihne" se provést delete[] directory;. Jak to ošetřit?
Předem díky moc. :)