почему этот код вызывает ошибку во время выполнения? - PullRequest
1 голос
/ 14 января 2010
#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 ]

7 голосов
/ 14 января 2010

Поскольку вы записываете данные в ячейку памяти, которой вы не владеете.

Действительно, при запуске strcat вы добавляете символы строки b сразу после символов строки a. Но вы не претендовали на память после строки а.

2 голосов
/ 14 января 2010

Когда вы соединяете b с a, вы записываете в память, которую вы не выделяли,

...