-6
我使用一个64位linux
机器,所以我的指针的大小是8个字节,所以看下面的代码,我写了下面的程序段落H
在我的字符串(在strcpy()
)。但似乎并没有发生。在下面的程序中,我认为它会溢出并破坏x
中的内存。这下面的程序在我的系统上运行良好,但如果我在strcpy()
中添加另一个字母,它会出现段错误。所以这样的问题显然与系统有关,但是这个字符串是如何不使程序崩溃的呢?我确实在寻找这样一个问题,如果有一些链接存在,你也可以指导我。提前致谢。如何在C中处理字符串?
int main()
{
int x;
char* c ;
x = 0xF0000000;
strcpy(&c,"ABCDEFGHFFFFFF");
x++;
printf("%X\n",x);
printf("%s\n",&c);
}
我看到你已经声明了一个指针......但它指向什么? – 2014-09-22 20:48:08
当然它要和警告编译,但它确实给我一个输出为以下 'F0000001 ABCDEFGHFFFFFF' 我现在这肯定你如何写常规程序,我只是想看看字符串被复制,你是大家一定没有答案。 – 2014-09-22 20:52:19
你的程序简直就是UB,没什么有用的争论。如果你想知道在特定运行情况下你的情况究竟是什么,请将调试器分解出来并单步执行。请注意,使用调试器可能会改变程序行为。 – Deduplicator 2014-09-22 20:54:42