Bonjour,
Je suis sous Ubuntu et je travaille avec CodeBlocks. Je suis face à un problème, je veux concaténer le nom de mon dossier puis celui de mon fichier. Pour ce faire, j'utilise strcat deux fois. La première mon_dossier suivie de /; et la seconde mon_premier_strcat suivie de mon_fichier. Mais là j'ai une belle erreur (pour le second) :
Et là je pleure parce que c'est un problème de mémoire, je vous mets mon code et j'explique ensuite tout ce que j'ai pu entreprendre :****glibc detected *** mon_chemin : free():invalid next size(): 0*00000000010e5460***
la première solution fut de rester sur du cpp et donc d'utiliser les new. Tout ce qui est test, je n'ai aucun soucie, les test2 ça se gâte. J'ai essayé new char seul, avec ce que vous voyer plus haut, avec un nombre en dur ect rien n'y fait j'ai toujours l'erreur mentionné en haut. Si j'enlève l'allocation mémoire (même si c'est mal), l'erreur est exactement la même. Toutefois si j'affiche test2, j'ai bien ce que je souhaite dedans.
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 path p ("./result_dicom"); nameFile* files; files = new nameFile(p); // SECONDE SOLUTION /*char* test; int size = strlen(strcat(const_cast<char*>(p.c_str()),"/"))*sizeof(char); test = (char*) malloc(size); test = strcat(const_cast<char*>(p.c_str()),"/"); char* test2; int size2 = strlen(strcat(test,const_cast<char*>(files->getV()[0].c_str())))*sizeof(char); test2 = (char*) malloc(size2); test2 = strcat(test,const_cast<char*>(files->getV()[0].c_str())); cout<<test2<<endl; free(test); free(test2);*/ //PREMIERE SOLUTION char* test = new char; test = strcat(const_cast<char*>(p.c_str()),"/"); //cout<<test<<endl; char* test2 = new char[sizeof(test)]; test2 = strcat(test,const_cast<char*>(files->getV()[0].c_str())); //cout<<test2<<endl; delete(test); delete(test2);
Me semblant avoir fait le tour, et n'étant pas une pro du cpp, je suis revenue sur du c (même si c'est le mal quand on est en cpp). Et là toujours la même erreur avec le code du haut ....
Et je vous avoue que je n'ai plus trop d'idée ^^' Après il est bien possible que ma méthode de double concaténation ne soit pas la bonne. Quelques soit vos suggestions ou idées je suis preneuse en tout cas![]()
Merci pour votre lecture
Partager