C++ 如何使用主参数添加更多堆栈?
我正在尝试向我的程序中添加更多堆栈,但是我的程序使用main和参数,但是我需要使用main和args来测试porpus,但是在这种情况下,如何添加useC++ 如何使用主参数添加更多堆栈?,c++,c,stack,C++,C,Stack,我正在尝试向我的程序中添加更多堆栈,但是我的程序使用main和参数,但是我需要使用main和args来测试porpus,但是在这种情况下,如何添加use\u declspec和args?我正在添加更多的堆栈,因为我正在为安全问题创建一些内容,但我无法在没有堆栈限制的情况下显示完整的experimet _declspec(noinline) int old_main(int argc, const char* argv[]) { if (argc != 2) { p
\u declspec
和args?我正在添加更多的堆栈,因为我正在为安全问题创建一些内容,但我无法在没有堆栈限制的情况下显示完整的experimet
_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();
}
\u declspec(noinline)int old_main(int argc,const char*argv[]){
如果(argc!=2)
{
printf(“用法:%s examlpe”,argv[0]);
出口(1);
}
char buf[最大缓冲区];
strcpy(buf,argv[1]);
printf(“%s hi!\n”,buf);
}
int main(){
char-moreStack[10000];
对于(int i=0;i
最简单的方法可能是:
argc
和argv
保存到全局变量pthread\u attr\u t
对象并调用pthread\u attr\u setstacksize
来设置所需的堆栈大小pthread\u attr\u t
调用pthread\u create
,以运行将全局保存的argc
和argv
值传递给old\u main
函数的函数pthread\u exit
终止原始线程old_main
如果您想要更多的堆栈,在链接可执行文件时可能会有一个选项。假设Windows和MSVC作为编译器,您似乎要查找的是或。任何一个都会调整可执行文件主线程的堆栈大小。根本不清楚您要做什么。你想解决什么问题?为什么要“添加更多堆栈”?我想在我的程序中添加更多堆栈,因为我正在做一些安全性实验。我不明白这一点:“我的程序使用带参数的main,但我需要使用带参数的main进行测试。”您有X,但您想使用X。所以问题解决了吗?根据操作系统的不同,可能存在配置堆栈大小的方法。但在本例中,根本没有明显的理由说明
moreStack
需要作为堆栈变量。只要把它变成一个全局变量或一个静态局部变量,我还是不明白。是否要分配自己的堆栈,然后切换到该堆栈?你真正的问题是“如何切换到使用我分配的堆栈?”@DavidSchwartz