我知道 C 程序可以从外部(从命令行)传递参数,例如
gcc.exe -std=c++17 -o fileName 
通过将函数声明main为带参数
int main(int argc, char* argv[])
我的问题是,这些字符串存储在哪里?在 C 中,不是应该在编译时知道数组的大小。您可以向程序传递很多很多参数(字符串),或者根本不传递。但是程序已经被编译成一个可执行文件——它不能比它已经占用更多或更少的内存。或者这个内存是动态分配的?
在 DOS 上,字符串存储在 __psp:128(__psp 通常是 DS,但不一定是)。
在 Windows 上,字符串存储在堆中。原始命令行存储在具有非常低地址的内存块中。
在 Linux 上,字符串存储在堆栈的底部。