C noob здесь. Какое значение имеет аргумент, который я даю malloc, когда я могу передать ему какую-либо строку размера?Какое значение имеет аргумент malloc?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *str;
str = malloc(1*sizeof(char));
strcpy(str, "abcd");
printf(str);
printf("\n");
return 0;
}
Это прекрасно работает. Я бы подумал, что я не смогу хранить более 1 символа в str от моего понимания того, что должно быть malloc.
C не имеет границ проверки. Вывод за пределы приводит к * неопределенному поведению *. –
Попробуйте записать, скажем, 1 МБ символов для этого 1 байтового распределения. Ваша программа выйдет из строя. – eddiem
Это важно, потому что вы не хотите получать доступ к памяти, которая не выделена. Это неопределенное поведение, и оно может или не может потерпеть крах. Strcpy не знает и не заботится о том, сколько памяти вы выделили. Он начинается с первого указателя и копий, пока что-то копировать. – Olayinka