C 为什么这段代码会导致运行时错误?
当您将b连接到a时,您是在写入未分配的内存,当您将b连接到a时,您是在写入未分配的内存,因为您是在您不拥有的内存位置写入数据C 为什么这段代码会导致运行时错误?,c,buffer-overflow,C,Buffer Overflow,当您将b连接到a时,您是在写入未分配的内存,当您将b连接到a时,您是在写入未分配的内存,因为您是在您不拥有的内存位置写入数据 实际上,在运行strcat时,您将在字符串a的字符之后添加字符串b的字符。但是您没有声明字符串a之后的内存。,因为您正在一个不属于自己的内存位置写入数据 实际上,在运行strcat时,您将在字符串a的字符之后添加字符串b的字符。但您尚未声明字符串a之后的内存。字符串文字不可修改。字符串文字不可修改。 #include <stdio.h> #include &l
实际上,在运行strcat时,您将在字符串a的字符之后添加字符串b的字符。但是您没有声明字符串a之后的内存。,因为您正在一个不属于自己的内存位置写入数据
实际上,在运行strcat时,您将在字符串a的字符之后添加字符串b的字符。但您尚未声明字符串a之后的内存。字符串文字不可修改。字符串文字不可修改。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *a = "Hello ";
const char *b = "World";
printf("%s", strcat(a, b));
system("PAUSE");
return EXIT_SUCCESS;
}