#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; }
Поскольку вы записываете данные в ячейку памяти, которой вы не владеете.
Действительно, при запуске strcat вы добавляете символы строки b сразу после символов строки a. Но вы не претендовали на память после строки а.
Когда вы соединяете b с a, вы записываете в память, которую вы не выделяли,