命令行参数在哪里?

众所周知,C中main funcion的原型是int main(int argc, char **argv) 。 argv数组指向的那些字符串在哪里? 他们在哪个内存段? 数据,堆栈还是堆?

谢谢。


在Linux下,它们在程序启动时位于堆栈上,指针本身和它们指向的字符串。 这将会在main()的堆栈框架之上。 C库启动代码负责将适当的指针传递给main()

您可以在函数create_elf_tables()中的fs/binfmt_elf.c中找到设置新程序堆栈的内核代码,包括参数和其他所有内容。

(有趣的是,我刚刚学到了:在堆栈中可以找到16个随机字节,由内核在exec时放在那里,为了方便RNG播种,以防万一你不想开启麻烦/dev/urandom 。)

链接地址: http://www.djcxy.com/p/82505.html

上一篇: Where do command line arguments reside?

下一篇: Why do we use heap to store memory?