Я пытался понять, что такое malloc() и почему он используется. Я понимаю, что malloc для динамического распределения памяти, он нужен, если вы не знаете, сколько памяти вы не хотите создавать. Я занимался этим на практике.
Следующий код объявляет массив указателей на символы, а первый указатель на символ инициализируется с помощью «hello». Это прекрасно работает.
int main()
{
char *strarray[5];
strarray[0]="hello";
printf("%s\n",strarray[0]);
return 0;
}
Но если я попытаюсь использовать функцию strcpy() для копирования строки "hello" в strarray[0] (без malloc()), это вызовет проблему. И он входит в какой-то цикл и не копирует строку. И он отлично работает, если я использую malloc для выделения памяти.
int main()
{
char *strarray[5];
//strarray[0]=(char *)malloc(sizeof(char)*10);
strcpy(strarray[0],"hello");
printf("%s\n",strarray[0]);
return 0;
}
Я хочу знать, в чем разница? Если я могу инициализировать "hello" указателем char, для которого не используется malloc, почему я не могу сделать то же самое с помощью strcpy().
malloc()
полезна функция выделения памяти. - person WhozCraig   schedule 14.09.2013