Я сталкивался с этим в чьем-то коде ... Я не знаю, правильно ли это (потому что даже если это выглядит неправильно, это работает).Может ли кто-нибудь уточнить, правильно ли это или нет, почему так и почему оно все равно работает?
Короче говоря, мы хотим сохранить все аргументы (заданные как командная строка), объединенные, в 1строка.
Примечание: каждая строка имеет хотя бы 1 символ.
Фрагмент:
int main(int argc, char **argv) {
// Declaring a pointer to a string
char *desintation_string;
// Allocating enough memory to store all arguments (given as command-line) concatenated
destination_string = malloc((argc) * sizeof(char)); /* <————— is this correct ? does
it indeed allocate
enough memory to fit
all the arguments
concatenated ? */
. . .
}
Вопрос в следующем:
Распределяет ли эта строка "destination_string = malloc((argc) * sizeof(char));
" достаточно памяти для этого?
Может кто-нибудь объяснить, что именно это делает?Потому что я читал это как: он выделяет (argc * 1 байт).Тем не менее, когда вы запускаете его и копируете в него аргументы, это работает, может кто-нибудь объяснить это тоже?