内存分配和**argv参数

Memory allocation and **argv argument

本文关键字:argv 参数 分配 内存      更新时间:2023-10-16

我知道我们使用这个参数的原因,我甚至知道如何使用这个参数。

只有一件事我还不明白。程序如何为来自输入的字符串分配内存**argv在程序开始时没有分配内存,不是吗?我本以为会出故障,但没有发生。

有人知道这种内存分配是如何工作的吗?

C/C++运行时处理命令行参数,并创建一个放置参数的内存区域。然后,它调用您的main(),为您提供参数数量的计数以及指向存储参数的区域的指针。

因此,C/C++运行时拥有分配的内存区域,一旦main()返回或使用其他C/C++函数停止程序(如exit()),则由C/C++运行库解除分配该区域。

这个过程源于在Unix下使用C,并为C++保留,作为提供C++委员会试图维护的向后兼容性的一部分。

通常,当程序加载时,加载程序启动的入口点不是main()函数,而是C/C++运行时中定义的入口点。C/C++运行时进行各种初始化,以设置C/C++标准所说的在初始化完成后C/C++运行库调用main()函数时将存在的环境。

初始化过程中的一个步骤是解析所提供的命令行参数,然后将这些参数作为函数参数提供给main()函数。