gpt4 book ai didi

c - 为什么每次主函数的参数地址都变了?

转载 作者:行者123 更新时间:2023-12-04 06:41:14 24 4
gpt4 key购买 nike

我写了一个测试,打印 argv[0] 的内容——主函数参数的地址,如下所示:

printf("%p\n",argv[0]);

我在 Windows 7 上使用 Visual Studio 2008 编译了该程序。

然后我执行了 1000 次程序,将结果输出到一个文件中。结果,argv[0] 的地址发生了变化,但是,有些地址是相同的,并且重复了大约 10 次。

为什么每次主函数的参数地址都变了?

最佳答案

有趣的问题,我在程序自己的地址空间中很少看到或没有看到不确定性的原因。但我会告诉你我所知道的。

首先,argv 不是由 windows 而是由 stdc 运行时分配、创建和初始化的。这反过来又引发了另一个问题——winmain 的 lpCmdLine 参数是否也会改变?在同一个堆上分配了几个其他变量,可能环境变量也被复制了。其中之一必须具有取决于执行实例的大小。

无论如何,为什么要黑箱思考?你的拆卸器呢,士兵?

关于c - 为什么每次主函数的参数地址都变了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4205554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com