char* StrCat(char* dest, char* source)
{
char* retVal = dest;
while(*dest)
dest++;
while(*dest++ = *source++) ;
return retVal;
}
int main()
{
char* a = "One";
char* b = "Two";
char* x = StrCat(a, b);
printf("%s\n", x);
return 0;
}
程序从源到目标复制时第一次崩溃,第二次循环时崩溃。 (Access violation
错误)
答案 0 :(得分:2)
变量a和b的内容(字符串" One"和#34; Two")存储在只读段中,内容受到保护,您无法覆盖其数据。
另外,StrCat()函数没有多少逻辑。
您需要使用全局 char 数组或 char 数组,并将其传递给大小有限的函数,并确保#39;在复制过程中超出其缓冲区大小,否则最终会出现堆栈溢出。
另一种解决方案是使用 malloc 动态分配内存,当你不再需要时,应该释放这个内存。
重新思考如何编写这样的函数来纠正它,但首先解决这个内存问题。