所以我的教授给了我(其中 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/