merge sort 오류.... (동적 메모리 할당.. ㅡㅜ)

합병정렬이 되어야 숙제를 하던지 말던지 하지
동적 배열이 오류 난다..
힙 메모리 어쩌구 저쩌구 나오는데 계속 보고 있는데 답이 안나온다.. ㅡㅜ

#include <iostream>

using namespace std;
//#define ElementType int

void mergesort(int L[], int, int);
void merge(int L[], int, int, int);

int main()
{
int A[12] = {5, 3, 1, 2, 9, -4, 8, 9, -2, -5, 7, 7};

int n = 12;
mergesort(A, 0, n-1);
for(int i=0; i<n; i++)
cout<<A[i] << " " <<endl;
return 0;
}

void mergesort(int L[], int low, int high)
{
if(low < high)
{
int mid = (low + high) / 2;
mergesort(L, low, mid);
mergesort(L, mid+1, high);
merge(L, low, mid, high);
}
}

void merge(int L[], int low, int mid, int high)
{
int* temp;

temp = new int[high - low + 1];   에러 난다. int[12] 요렇게 숫자로 주면 에러 안난다.. 머가 문제지.. ㅡ.ㅡ

int k;
int i = k = low;
int j = mid+1;

while(i <= mid && j<= high)
{
if(L[i] < L[j])
{
  temp[k] = L[i];
  i++;
}
else
{
  temp[k] = L[j];
  j++;
}
  k++;
}

int m;
if(i > mid)
{
for(m=j; m<= high; m++)
{
  temp[k] = L[m];
  k++;
}
}
else
{
for(m=i; m<= mid; m++)
{
  temp[k] = L[m];
  k++;
}
}

for(i = low; i <= high; i++)
{
L[i] = temp[i];
}
delete[] temp;
}


-> 결국 int SIZE라는 global value 를 만들어 거기에 들어오는 배열의 숫자 값을 넣어 준 다음
    new를 써서 동적 배열 할때 SIZE값을 넣어주었다...
   동적 배열 할당시 배열의 크기에 대하여 연산은 안되는 거란 말인가...
   어렵다.. 어려워..
,