void babo(int *arr,int num)
{
int temp=0;
if(num==1) return;

for(int i=num-1;i>0;i--)
if(arr[i]<arr[i-1]){
temp=arr[i];
arr[i]=arr[i-1];
arr[i-1]=temp;
}

babo(&arr[1],num-1);
return;
}

上記の関数は独自に実装したバブルソートのコードでして
arrにソートする配列へのアドレス、numに配列の個数となっています。
それはともかくとして、適当な数が代入された100,000個のint型(符号付き32bit)を上記の関数でソートしますと
なぜか制御が戻ってこないままプログラムが終了してしまいます。(10,000個とかだとソートされるのですが・・)

処理系はBCC5.5.1で、OSはXP(32bit)sp2を使用しています。CPUも32bitです。
原因がわかる方はいますでしょうか・・・