Bonjour,
J'ai un problème avec ce code permettant de lire récursivement un répertoire.
Il fonctionne tant que je ne lui demande pas de lire le répertoire racine (donc la totalité du disque).
Lorsqu'il scanne c:\, la console affche le message d'erreur suivant:
Est ce un problàme de fuite de mémoire? J'avoue ne pas trouver la solution!This application has requested the Runtime to terminate it in an unuasual way. Please contact ...
Voici le code (sous windows xp, code::blocks et mingw 3.4.5):
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 #include <iostream> #include <iomanip> #include <stdexcept> #include "fileOperation.h" // contient les headers de boost unsigned long Recurse_Read(const fs::path& pathname) { static unsigned long readfile_count = 0; static unsigned long readdir_count = 1; // static unsigned long err_count=0; //Instance de f::directory_iterator avec le constructeur par défault. Cette instance represente un marqueur de fin utilisable pour déterminer la fin du parcours. fs::directory_iterator end_iter; std::cout << "\nLecture du r\202pertoire :\n "<<pathname.native_file_string() <<'\n'; for ( fs::directory_iterator it(pathname); it != end_iter; ++it){ try{ if(fs::is_directory(*it)){ ++readdir_count; Recurse_Read(*it); } else{ ++readfile_count; std::cout << "file # " <<readfile_count <<"... : "<< it->leaf() <<'\n'; } } catch (const std::exception & e){ if (fs::is_directory(*it)) ++readdir_count; else ++readfile_count; ++err_count; //std::cerr << e.what() << std::endl; std::cout << '\n'<< e.what() << err_count << std::endl; } std::cout << readdir_count << " r\202pertoire(s) lu(s)" << std::endl; std::cout << readfile_count << " fichier(s) trouv\202(s)." << std::endl; return 0; }
Partager