#c #memory
#c #память
Вопрос:
Мне трудно понять, почему ответ на следующий вопрос составляет 66 байт:
Сколько памяти выделяется для данных, передаваемых через указатель во 2-м параметре основных функций (без учета размера указателя) в 64-разрядной системе, если приложение запускается с
./program alfa beta gamma
Комментарии:
1. @pmg Да. Я новичок в stackowerflow, должен ли я переписать вопрос, чтобы он так и сказал?
2. «2-й параметр» …. вы имеете в виду
argv[1]
(указатель на массив"alfa"
где-то в памяти)? илиargv
сам по себе… когдаargc
будет 1-й параметр?3. argc — это первый параметр, и я хотел бы знать размер argv-s в байтах. argv[0] = ./app argv[1] = альфа argv[2] = бета argv[3] = гамма
Ответ №1:
Лучшее, что я мог придумать, это
argv[0]
==> 8 байт для самого указателя 6 байт для data ( "./app"
) ==> 14
argv[1]
==> 8 байт для самого указателя 5 байт для data ( "alfa"
) ==> 13
argv[2]
==> 8 байт для самого указателя 5 байт для data ( "beta"
) ==> 13
argv[3]
==> 8 байт для самого указателя 6 байт для data ( "gamma"
) ==> 14
argv[4]
==> 8 байт для указателя ( NULL
) ==> 8
ВСЕГО: 62
Может быть, добавить 4 байта argc
для 66 байт??
Комментарии:
1. Это моя ошибка, я непреднамеренно перевел часть после ./ . Исходная проблема была с ./program , а не ./app . Это правильный ответ.