我有一个 Win32 C++ 应用程序,我需要修改应用程序中的命令行参数。具体来说,我想以 GetCommandLineW()
返回我的新参数的方式编辑命令行参数。
信不信由你,这是可行的(因为我们有一个指向字符数组的非常量指针):
LPTSTR args = GetCommandLineW();
LPTSTR new_args = L"foo --bar=baz";
wmemcpy(args, new_args, lstrlenW(new_args));
// ...
LPTSTR args2 = GetGommentLineW(); // <- equals "foo --bar=baz"
但我不知道 Windows 为 GetCommandLineW()
提供的 LPTSTR
分配了多少内存。
还有其他方法吗?或者有谁知道是否为命令行参数分配了可预测的内存量?
最佳答案
GetCommandLineW()
不分配任何内存。它只是返回一个指向缓冲区的指针,该缓冲区由操作系统在进程的 PEB
中分配。创建进程时的结构。该缓冲区在进程的生命周期内存在。
关于c++ - 修改命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23125801/