关于 的论点main()
,2011 C 标准说 (5.1.2.2.1:2):
如果 argc 的值大于零,则数组成员 argv[0] 到 argv[argc-1] 应包含指向字符串的指针,这些指针在程序启动之前由主机环境给出实现定义的值。
在这种情况下,单词“string”是否应该被解释为“0-terminated string”,即一系列非 0 字符后跟一个最终的 '\0',或者某些实现是否/可以以不同的方式将参数传递给程序?
在 POSIX 平台上,exec*
函数家族之一的参数是否被函数验证exec*
为指向格式良好的字符串的指针(以及如何?),或者 setuid 程序是否应该避免假设它已通过格式正确的 0-终止字符串作为参数?