c - C 中 argv 的确切内存大小

标签 c argv

所以我的教授给了我(其中 x 是一个 C 可执行文件):

$ ./x y z w

他说int main(int argc, char **argv)argv的内存大小是48字节,包括它自己。

谁能帮我解释一下?

最佳答案

argv 正如函数所说,是一个指向 char 的指针,就大小而言意味着它是一个指针。通常(几乎总是但不能保证?),所有指针的大小都相同。如果这是一台 64 位机器,指针的大小将为 8 个字节。在这种情况下,argv 包含五个元素:指向五个字符指针的指针:'./x'、'y'、'z'、'w' 和 NULL,因为 argv 以 NULL 结尾。

根据我的计算,argv 中还剩 40 个字节,所以我不确定他从哪里得到另外 8 个字节。

编辑:正如其他人所建议的,argv 本身也会占用一个指针的空间,所以还有另外 8 个。

关于c - C 中 argv 的确切内存大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8563649/

相关文章:

c - 在调用 free() 时使用符号 (&)

C 指针算术异常行为

Python Popen 在 stdin 上发送到进程,在 stdout 上接收

python - python中的 'argv'是否总是使用脚本名称作为第一个参数?

java - Java中的args、argh和argv有什么区别?

c编程获取sleep后tty的修改时间

c++ - 调用 XCreateWindow() 时产生 GLX 错误的 XLib

c - 为什么不能在 if 语句中使用空指针?

c - 如何解释 C 命令行参数中的特殊字符?

c - C 中的逆波兰计算器 : using argv as a way to store and retrieve results