[問題] 二維動態陣列 free會錯誤
以下不是完整的程式碼,只是我將無關緊要的部份給刪掉了
而且經實驗證明,即使是這樣子在編譯後,程式也會出現記憶錯誤
編譯是都沒問題的。
我一個一個試的結果,將free(all);去掉的話,程式就會正常執行
這是不是代表我在給空間時有出錯?
二維 malloc 跟 free 的用法都是去翻板上的舊資料做的
所以想不到問題在哪,還請各位神人幫忙一下。
#include<stdio.h>
#include<stdlib.h>
int n;
int catalan(void);
int main(void){
int i=1,Cn;
int **all;
printf("type any real number here\n");
scanf("%d",&n);
Cn=catalan();
all = (int**)malloc(Cn*sizeof(int*));
for (i=0;i<=Cn;i++){
all[i]=(int*)malloc((2*n+1)*sizeof(int));
}
for (i=0;i<=Cn;i++){
free(all[i]);
}
free(all);
return 0;
}
int catalan(void){
int i,Cn=1,c=1;
for (i=n+1;i<=2*n;i++){
Cn=Cn*i;
c=c*(i-n);
}
Cn=Cn/((n+1)*c);
printf("\nThere are %d sequence in Cn! \n",Cn);
return Cn;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.8.155.103
→
10/22 10:37, , 1F
10/22 10:37, 1F
推
10/22 10:41, , 2F
10/22 10:41, 2F
→
10/22 10:54, , 3F
10/22 10:54, 3F
→
10/22 10:54, , 4F
10/22 10:54, 4F
推
10/22 11:33, , 5F
10/22 11:33, 5F
→
10/22 11:33, , 6F
10/22 11:33, 6F
→
10/22 12:14, , 7F
10/22 12:14, 7F
→
10/22 12:14, , 8F
10/22 12:14, 8F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):