Increase stack size in c++
<p>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>

<p>P.S. I increased stack reserve size from Visual Studio configuration, however, it does not also solve my problem. </p>

<pre><code>void sorting:: MergeSort(int *theArray, int n) {


    mergesort(theArray, 0, n - 1);

}
void sorting::mergesort(int *theArray, int first, int last) {
    if (first &lt; 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 &lt;= last1) &amp;&amp; (first2 &lt;= last2); ++index) {
        if (theArray[first1] &lt; theArray[first2]) {
            tempArray[index] = theArray[first1];
            ++first1;
        }
        else {
            tempArray[index] = theArray[first2];
            ++first2;
        }
    }
    // finish off the first subarray, if necessary
    for (; first1 &lt;= last1; ++first1, ++index)
        tempArray[index] = theArray[first1];

    // finish off the second subarray, if necessary
    for (; first2 &lt;= last2; ++first2, ++index)
        tempArray[index] = theArray[first2];

    // copy the result back into the original array
    for (index = first; index &lt;= last; ++index)
        theArray[index] = tempArray[index];
    delete[] tempArray;
}  // end merge
</code></pre>

<p>And my main function.</p>

<pre><code>  #include &lt;iostream&gt;
    #include &lt;ctime&gt;
    #include "sorting.h"

    using namespace std;



    int main()
    {
        sorting sort;
        int size = 500000;
        int *myArr=new int[size];

        for (int i = 0; i &lt; size; i++) {
            myArr[i] = rand() % size;
        }
        cout &lt;&lt; clock()&lt;&lt;"   ";
        sort.MergeSort(myArr,size);
        cout&lt;&lt;clock();
        cin.get();
    }
</code></pre>