Конечно, если вы не выделите достаточно места для буфера, вы наверняка сможете:
char* ptr = (char*)malloc(3);
strcpy(ptr, "this is very, very bad"); /* ptr only has 3 bytes allocated! */
Однако, что действительно плохо, так это то, что этот код может работать без каких-либо ошибок, но он может перезаписать часть памяти где-то, что может привести к тому, что ваша программа будет взорвана позже, на первый взгляд случайным образом, и вы не сможете понять, почему Это источник часов (иногда даже дней ) разочарования, которые вам скажет любой, чье значительное количество времени потратило на написание C
.
Вот почему с C
вы должны быть предельно осторожны с такими вещами и проверять код дважды, трижды, n-й степени. После этого проверьте еще раз.