Ich habe die folgenden Codes:strcpy Ursache Programm empfangene Signal SIGSEGV, Fehler Segmentation
int main(int argc,char * argv[])
{
char* SourceWeightFiel;
char* TargetWeightFile;
strcpy(SourceWeightFiel, argv[1]);
strcpy(TargetWeightFile, argv[2]);
return 1;
}
, wenn ich es in gdb debuggen, es ist Ok in den ersten strcpy ausgeführt wird, aber wenn es geht in die zweite strcpy, es gibt immer die folgenden Fehler:
26 strcpy(SourceWeightFiel, argv[1]);
(gdb) n
27 strcpy(TargetWeightFile, args);
(gdb) n
Program received signal SIGSEGV, Segmentation fault.
__strcpy_sse2_unaligned()
at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:94
94 ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S: No such file or directory.
(gdb)
Ich kann nicht herausfinden, warum, und habe keine Ahnung, wie Sie es beheben. Weiß jemand davon?
Diese Aussagen strcpy (SourceWeightFiel, argv [1]); strcpy (TargetWeightFile, argv [2]); macht keinen Sinn und hat ein undefiniertes Verhalten, weil die Zeiger nicht initialisiert sind und unbestimmte Werte haben –
Es ist C++. Verwenden Sie std :: string und nicht strcpy. –
Sie testen nicht, ob argv [1] oder argv [2] existieren. –