title: Increase stack size in c++
body: <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>