在C / C ++程序中,找到编写为:
的主函数是很常见的int main( int argc, char *argv[] )
{
...
}
我对argv使用的内存有疑问: 它保留在哪一刻?在编译或执行时? 怎么做的? 它保留了多少内存? 是否可以对程序中的其他变量使用相同的技术?
答案 0 :(得分:0)
内存用于命令行参数,不使用操作系统命令行时则不需要它。下面的主要功能还有效,取决于编译器,有时" NULL"需要在main()中插入才能正确编译。如果您不需要命令行,这可能会节省微量内存。 ;)
INT main()
{
... Not using (int argc, char *argv[]) is not too common though, most people type the command line arguments even when they don't use them. Strange I know, they must not know why they do what they do. ...
}
"参数argc和argv以及argv数组指向的字符串应该可由程序修改,并在程序启动和程序终止之间保留它们最后存储的值。" C-Documentation:http://port70.net/~nsz/c/" c89"
它由变量和数组组成。因此(int argc ==变量)(char * argv [] == *指针aray)
我会说4个字节...(int argc - > int 16bit)+(char * argv [] - > * pointer = 16bit)= 32bits ... lol,idk。未定义此数组的大小,取决于数组是否真正"字节大小",对齐,填充等等。
如果您愿意,我确定您可以将变量添加到main(),但这可能是"实现定义的"。显然,您也可以使用* argv []来存储任何程序变量,因为这就是它所用的。
的 P.S。
这完全取决于操作系统,您需要深入研究正在使用的编译器的文档。许多广泛的问题,调整你的要求我可以根据需要更具体!希望我能覆盖你所询问的内容。