Вопрос относительно выделения памяти в C

#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 . Это правильный ответ.