【问题标题】:What is the size of argument list in C/C++ main function and indetermined behavior [duplicate]C/C++主函数中参数列表的大小和不确定的行为[重复]
【发布时间】:2015-04-17 09:29:49
【问题描述】:

我想知道 C/C++ 主函数中参数列表的最大大小是多少?它取决于操作系统吗?如果我将大量的参数传递给主函数会发生什么,主函数的行为将是不确定的?

谢谢,

【问题讨论】:

  • 我的意思是我们可以传递多少个参数,如果我传递的参数数量大于最大尺寸,这是否是一个安全问题?
  • 查看SO post 以获得关于参数大小的理论讨论。什么上下文需要这些知识?
  • @channgo2203 我认为 Linux 将参数向量的大小限制为 128 kB。通常,如果您尝试使用更多参数启动程序,则对 exec 的调用会失败。
  • 感谢 FUZxxl,但是,在 main(int argc, char* argv) 中,如果我将非常大的数字和字符串列表传递给 argv,使它们小于 128KB,会发生什么,可能exec失败了,我去查一下。
  • @channgo2203 为什么在这种情况下会发生什么奇怪的事情?指针数组argv 计入 128 kB;你不会有任何问题。

标签: c++ c security


【解决方案1】:

是的,它取决于操作系统,但限制是关于可以传递给进程的字符数,而不是参数的数量。看到这个:Maximum Length of Command Line String

【讨论】:

  • 感谢 rubix_addict,如果字符数很大且字符串格式错误,是否存在安全问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-24
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多