为什么这段代码导致运行时错误?

时间:2010-01-14 08:16:38

标签: c buffer-overflow

#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;
}

2 个答案:

答案 0 :(得分:7)

因为您在不属于您的内存位置写入数据。

实际上,在运行strcat时,您将在字符串a的字符后面追加字符串b的字符。但是你没有在字符串a之后声明内存。

答案 1 :(得分:2)

当你将b连接到a时,你正在写入你没有分配的内存,