84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
环境是win10+VS2015int common_subsequence[1000][1000]声明在mian函数中,运行到这步栈溢出;int common_subsequence[100][100]声明在main函数中,不会发生栈溢出;int common_subsequence[1000][1000]声明为全局,不会发生栈溢出。究竟怎么回事?有什么建议吗
int common_subsequence[1000][1000]
int common_subsequence[100][100]
欢迎选择我的课程,让我们一起见证您的进步~~
windows下栈的大小默认是1mb,4*1000*1000约为4mb,所以调用main会发生栈溢出。
4*1000*1000
common_subsequence是自动变量,对象的内存分配会在函数开始前完成,也就是说溢出发生在main函数第一行代码执行之前。
建议用动态内存分配+智能指针,或者直接用容器类。
std::unique_ptr<int [][1000]> sequence(new int[1000][1000]); std::vector<std::vector<int> > sequence;
windows下栈的大小默认是1mb,
4*1000*1000
约为4mb,所以调用main会发生栈溢出。common_subsequence是自动变量,对象的内存分配会在函数开始前完成,也就是说溢出发生在main函数第一行代码执行之前。
建议用动态内存分配+智能指针,或者直接用容器类。