我试过解决这个问题,只是没有结果,我希望你可以暗示我在正确的方向。我有一个程序,我初始化字符数组是这样的:C程序崩溃后strcpy
char variable1[8];
然后我试图复制一个函数,即
...
strcpy(variable1, (char *)function1());
其中功能1()返回字符数组值的返回值。 这里是功能1的结构:
char* function1()
{
....
char variable2[8]={'\0'};
...
return (variable2);
}
程序,当我尝试执行的strcpy线崩溃。
我已经阅读strcpy函数here是
重要:您必须确保目标缓冲区(S1)是能够包含源阵列中的所有字符,包括终止空字节。否则,的strcpy()将覆盖存储器过去缓冲区的末尾,引起缓冲区溢出,这可能导致程序崩溃
因此,我试图增加变量1大小为20,但仍程序崩溃。
除此之外,我尝试了不同的方法,即使用strncpy函数调用,它仍然给我同样的错误。
奇怪的是我可以执行function1(),它返回一个没有问题的值。只有当我试图复制它时,我的程序崩溃了。任何想法接下来我应该做什么?
了解如何使用调试器。向编译器询问它可以给你的所有警告(例如'gcc -Wall -Wextra'),然后改进你的源代码直到没有给出警告。 – 2012-04-03 07:05:53