Bonjour à tous,
je me retrouve avec un problème à résoudre, et j'ai bien peur que la solution la plus élégante pour le faire soit l'utilisation d'une ellipse.
Cependant, j'ai du mal avec cette étrange chose. Voici ma fonction:
Lorsque je tente d'utiliser ma fonction ainsi:
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 #include <string> #include <iostream> using namespace std; // cette fonction est censé prendre une nombre quelconque de string en paramètre et les afficher void Write(std::string args, ...) { string str; va_list vl; str=args; va_start(vl,args); do { cout << str; str=va_arg(vl, string); } while (!str.empty()); va_end(vl); cout << endl; }
Le programme plante à la dernière itération de la boucle do/while dans la fonction Write(), à la ligne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int main(int argc, char* argv[]) { Write(string("toto"), string("titi"), string("tata")); return 0; }Le débugger m'amène dans le fichier memcpy.asm à la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part str=va_arg(vl, string);avec le message d'erreur suivant:rep movsd ;N - move all of our dwordsAvez-vous une idée de ce qui cloche?Unhandled exception at 0x10231f1a (msvcr80d.dll) in Test1.exe: 0xC0000005: Access violation reading location 0x0a5cf99c.
Partager