【发布时间】:2018-04-09 04:13:25
【问题描述】:
我有以下代码:
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]);没有意义并且具有未定义的行为,因为指针未初始化并且fd具有不确定的值
-
它是 C++。使用 std::string 而不是 strcpy。
-
您不测试 argv[1] 或 argv[2] 是否存在。