我正在尝试在程序中添加更多堆栈,但是我的程序使用带参数的main,但是我需要将main和args一起使用来测试porpuses,但是在这种情况下,如何添加_declspec
和args呢?我添加了更多堆栈,因为我正在为安全性问题创建一些内容,但是如果不限制我的堆栈,我将无法展示完整的体验
_declspec(noinline) int old_main(int argc, const char* argv[]) {
if (argc != 2)
{
printf("Usage: %s examlpe", argv[0]);
exit(1);
}
char buf[MAX_BUFFER];
strcpy(buf, argv[1]);
printf("%s hi!\n", buf);
}
int main() {
char moreStack[10000];
for (int i = 0; i < sizeof(moreStack); ++i)
moreStack[i] = i;
return old_main();
}
可能最简单的方法如下:
如果您想要更多的堆栈,则在链接可执行文件时可能会有一个选项。
假定Windows和MSVC为编译器,您似乎要寻找的是/F compiler flag或/STACK linker flag。任一种都会调整可执行文件的主线程的堆栈大小。