MrKribou
Messages postés21Date d'inscriptiondimanche 18 août 2002StatutMembreDernière intervention 8 novembre 2002
-
29 août 2002 à 02:10
MrKribou
Messages postés21Date d'inscriptiondimanche 18 août 2002StatutMembreDernière intervention 8 novembre 2002
-
31 août 2002 à 00:17
J'ai fait une fonction pour rechercher un repertoire sur le disque qui renvois ensuie le path complet de ce repertoire. Donc cette fonction recherche dans tous les repertoires et donc elle s'appele recursivement. Seulement, j'ai un probleme car au bout d'un certains moments de recherche ca plante.
Je pense donc que c'est un probleme de "delete".
Bon aller je mets le code de la fonction parce que c'est pas tres comprehensible sinon (faites pas gaffe aux erreurs de prog autre juste le probleme de memoire :))
char* findPath(char* dirToFind, char* dir, int maxLevel)
{
maxLevel--;
char* ret ="";
char* fileDir=new char;
wsprintf(fileDir,"%s%s",dir,"*.*");
if (!strcmp(nom, dirToFind))
{
ret = newDir;
break;
} if (strcmp(nom, "..") && maxLevel !-1) ret findPath(dirToFind ,newDir, maxLevel);
}
if (ret !="") break;
//ici je pensais mettre un delete newDir mais ca marche pas plus
}
return ret;
}
l'attribut maxLevel correspond aux nombres de sous repertoires que j'ai du mettre en place a cause de mon probleme.
Merci si vous prenez le temps d'essayer de comprendre.
jfloviou
Messages postés17Date d'inscriptionsamedi 23 mars 2002StatutMembreDernière intervention25 septembre 2002 29 août 2002 à 04:16
Comme ca a premiere vue, je dirais que je ne suis pas d'accord avec ton char * tru=new char...
tu utilises apres truc comme un buffer... donc il vaudrait mieux initialiser ton buffer avec la bonne taille et non juste un seul caratere...
a ta place j'utiliserais malloc et free avec par ex
char * newdir=(char * )malloc(1024) (wsprintf est limite a un buffer de 1024)
et a la fin: free(newdir)
cependant, tu as peut etre l'habitude d'utiliser new char.... moi ca me parait bizarre....
MrKribou
Messages postés21Date d'inscriptiondimanche 18 août 2002StatutMembreDernière intervention 8 novembre 2002 30 août 2002 à 02:34
C'est pas tant que j'ai pris cette habitude, c'est que je viens juste de me mettre au c++; alors pour l'instant je regarde comment font les autres (moralite : je suis innocent:p)
Je vais essayer ton truc...mais la fonction malloc, c une fonction heritee du C et j'avais cru lire (je suis pas sur de moi sur ce coup la) qu'il fallait eviter de l'utiliser en C++ (question philosophie plus que technique je pense) c'est tu vrai ?
jfloviou
Messages postés17Date d'inscriptionsamedi 23 mars 2002StatutMembreDernière intervention25 septembre 2002 30 août 2002 à 19:19
ouah un canadien !!!!
(je reviens du quebec il y a une semaine!!!) je t'ai identifie par le c'est-tu vrai...
tu as raison pour le malloc.... MAIS un new cree un espace memoire d'une taille definie ex: new int => reserve l'espace pour un int... new bidule reserve l'espace de la taille de bidule (si c une classe ou un struct etc) OR new char reserve donc l'espace pour 1 char.... et pas un buffer de char! donc moi j'utilise malloc pour les buffer, et pour tt ce qui traite la memoire tres en detaille... pour tout le reste, qd on veut que l'objet a reserver soit un peu complique, la pas photo il faut utiliser new et delete...
Mais si on veut pousser en c++, tu pourrais utiliser les classes avancees telles que CString ou atl::string! (je ne sais plus si c'est propre au MFC...)
c'est tu compris mon chum?
JF
PS : si tu utilises les MFC d'ailleurs, il ya surement une classe qui fait deja ta job!
MrKribou
Messages postés21Date d'inscriptiondimanche 18 août 2002StatutMembreDernière intervention 8 novembre 2002 30 août 2002 à 20:10
Hehehee wowow faut pas se fier auz apparences :)
Chui breton pur et dur, mais je viens de passer un ans au quebec (je suis revenu ya kkes semaines et j'arrive pas a perdre certaines habitudes....
Et sinon bonne vavcances ? :)
Et pas de MFC pour moi...
(desole pour ce message un peu hors sujet)
Vous n’avez pas trouvé la réponse que vous recherchez ?
MrKribou
Messages postés21Date d'inscriptiondimanche 18 août 2002StatutMembreDernière intervention 8 novembre 2002 30 août 2002 à 23:52
reponse rapide au PS : moi je cherchais un job la bas mais pas trouver alors je cherche ici donc nan je travaille pas a rennes mais j'aimerai en trouver un la.
MrKribou
Messages postés21Date d'inscriptiondimanche 18 août 2002StatutMembreDernière intervention 8 novembre 2002 31 août 2002 à 00:17
Bon je viens d'essayer ton char * newdir=(char * )malloc(1024) et ensuite free(newdir) et ca marche.
Bon mais quand je fais char* newDir = new char et ensuite un delete newDir la ca marche pas...pourtant j'avais vu que ca se faisait. Si kkun a des renseignements a ce sujet ?