Increase stack size in c++

c++, stack-overflow, visual-studio

Solution

I have solved problem, It should work in all IDEs I think, but it definitely works in Visual Studio. PROJECT->Properties->Configuration Properties->Linker->System->Stack Reserve Size=4194304 . This makes stack size 4 MB.

Problem

I had asked this question couple days ago but It did not solve my problem. I cannot increase stack size in Visual Studio, I am using recursive method which gets high input and it causes to stack overflow. I cannot use vector or something else. What I need is to increase stack size in c++, Visual Studio. P.S. I increased stack reserve size from Visual Studio configuration, however, it does not also solve my problem. ``` void sorting:: MergeSort(int *theArray, int n) { mergesort(theArray, 0, n - 1); } void sorting::mergesort(int *theArray, int first, int last) { if (first < last) { int mid = (first + last) / 2; // index of midpoint mergesort(theArray, first, mid); mergesort(theArray, mid + 1, last); // merge the two halves merge(theArray, first, mid, last); } } // end mergesort void sorting::merge(int* theArray, int first, int mid, int last) { const int max_size = 500000; int tempArray[max_size]; int first1 = first; // beginning of first subarray int last1 = mid; // end of first subarray int first2 = mid + 1; // beginning of second subarray int last2 = last; // end of second subarray int index = first1; // next available location in tempArray for (; (first1 <= last1) && (first2 <= last2); ++index) { if (theArray[first1] < theArray[first2]) { tempArray[index] = theArray[first1]; ++first1; } else { tempArray[index] = theArray[first2]; ++first2; } } // finish off the first subarray, if necessary for (; first1 <= last1; ++first1, ++index) tempArray[index] = theArray[first1]; // finish off the second subarray, if necessary for (; first2 <= last2; ++first2, ++index) tempArray[index] = theArray[first2]; // copy the result back into the original array for (index = first; index <= last; ++index) theArray[index] = tempArray[index]; delete[] tempArray; } // end merge ``` And my main function. ``` #include <iostream> #include <ctime> #include "sorting.h" using namespace std; int main() { sorting sort; int size = 500000; int *myArr=new int[size]; for (int i = 0; i < size; i++) { myArr[i] = rand() % size; } cout << clock()<<" "; sort.MergeSort(myArr,size); cout<<clock(); cin.get(); } ```

Original source

Related problems