内存分配和**argv参数
Memory allocation and **argv argument
我知道我们使用这个参数的原因,我甚至知道如何使用这个参数。
只有一件事我还不明白。程序如何为来自输入的字符串分配内存**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()
函数。
相关文章:
- 在VS2013中使用devenv (C++)传递命令行参数argv
- 作为参数的'char *args[]'和'char **argv'之间的差异
- 静态变量需要在MAIN处理ARGV参数之前进行初始化
- 函数main中的参数argv(int argc,char *argv [])
- 如何在 GUI 程序 C++ 而不是控制台中传递 argv 参数
- 在 Argv 主参数中传递常量字符
- argc C++中的argv参数(游戏编程)
- argv[] 未注册参数
- 比较终端中通过char *argv []的参数
- C++ argv 参数不从命令行解析 *
- 如何在 Visual Studio 2015 调试中将'%'符号作为命令行参数 (argv) 传递?
- c++只允许在argv[1]中放置某些参数
- C++ 默认 argv(如果未在控制台中解析任何参数)
- int main(int argc,char* argv[]) 为什么 argc 给出 2 个参数
- 你能定义 main() 来接受不仅仅是 argc/argv 参数吗?
- 内存分配和**argv参数
- argv参数出现int main()问题
- 将argv参数转换为int
- 我怎么能得到QT主函数argv参数作为unicode编码格式
- CMakeLists.txt在配置中添加argv参数