私は以下のコードを持っている:strcpyの原因プログラムは、信号SIGSEGV、セグメンテーションフォールトを受け
int main(int argc,char * argv[])
{
char* SourceWeightFiel;
char* TargetWeightFile;
strcpy(SourceWeightFiel, argv[1]);
strcpy(TargetWeightFile, argv[2]);
return 1;
}
私はGDBでそれをデバッグするとき、それは最初のstrcpyを実行しているで大丈夫ですが、それは第二のstrcpyになると、それを
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)
私は理由を理解できず、それを修正する方法がわかりません。誰もそれについて知っていますか?
これらのステートメントのstrcpy(SourceWeightFiel、ARGV [1])。 strcpy(TargetWeightFile、argv [2]);ポインタが初期化されていないため意味がなく、未定義の動作をしません。不確定な値を持っています –
これはC++です。 std :: stringではなくstrcpyを使用します。 –
argv [1]またはargv [2]が存在するかどうかはテストしません。 –