
根据该图像,堆栈在启动时填充有辅助向量条目。
我以前不知道。
我如何访问/打印它们?
int main(int argc, char *argv[], char *envp[]);
Run Code Online (Sandbox Code Playgroud)
这是否意味着main有一个隐藏的第四个参数?
您的问题的答案是特定于系统的。C ISO 仅定义了该main函数的两个参数。附加参数不是标准的,应被视为扩展。引用维基百科的Main 函数:
\n\n\n参数 argc(参数计数)和 argv(参数向量)[1] 分别给出程序命令行参数的数量和值。argc 和 argv 的名称可以是 C 中的任何有效标识符,但使用这些名称是常见的约定。在 C++ 中,如果需要严格遵守,则应按字面意思理解名称,并且省略参数列表中的“void”。[2] C 和 C++ 标准也允许其他依赖于平台的格式,但在 C++ 中返回类型必须保持 int;例如,Unix(尽管不是 POSIX.1)和 Microsoft Windows 有第三个参数,给出程序的环境,否则可以通过 stdlib.h 中的 getenv 进行访问:
\n
int main(int argc, char **argv, char **envp)\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\nMac OS X 和 Darwin 有第四个参数,其中包含操作系统提供的任意信息,例如执行二进制文件的路径:[3]
\n
int main(int argc, char **argv, char **envp, char **apple)\nRun Code Online (Sandbox Code Playgroud)\n\nAMD64 ABI
\n\n根据System V ABI for AMD64, Draft 0.99.5,辅助向量条目的类型为auxv_t,如下所示:

| 归档时间: |
|
| 查看次数: |
1767 次 |
| 最近记录: |