也有可能是記憶體位址指定錯誤使用動態規劃陣列大小較容易發生記憶體上的問題像是忘記另外規劃或指定該陣列大小卻在程式的某個角落指定要使用那個陣列因為沒有指定該陣列使用哪邊的記憶體就會出現記憶體不足的問題
動態規劃陣列VS直接指定陣列大小int *a = int a[]int **a = int a[][]int ***a = int a[][][]上述指定完全沒有指定陣列大小(就會有bug)假設Temp1,Temp2,Temp3有值[指定一維陣列]int *aa=new int[Temp1]=>也就是int a[Temp1][指定二維陣列]int **aa=new int *[Temp1]for(i=0;i<Temp1;i++) a[i]=new int[Temp2]=>也就是int a[Temp1][Temp2][指定三維陣列]int ***aa=new int **[Temp1]for(i=0;i<Temp1;i++) a[i]=new int *[Temp2]for(i=0;i<Temp1;i++) for(j=0;j<Temp2;j++) a[i][j]=new int [Temp3]=>也就是int a[Temp1][Temp2][Temp3]※要特別注意*號遞減的關係
張貼留言
2 則留言:
也有可能是記憶體位址指定錯誤
使用動態規劃陣列大小
較容易發生記憶體上的問題
像是忘記另外規劃或指定該陣列大小
卻在程式的某個角落指定要使用那個陣列
因為沒有指定該陣列使用哪邊的記憶體
就會出現記憶體不足的問題
動態規劃陣列VS直接指定陣列大小
int *a = int a[]
int **a = int a[][]
int ***a = int a[][][]
上述指定完全沒有指定陣列大小(就會有bug)
假設Temp1,Temp2,Temp3有值
[指定一維陣列]
int *a
a=new int[Temp1]
=>也就是int a[Temp1]
[指定二維陣列]
int **a
a=new int *[Temp1]
for(i=0;i<Temp1;i++)
a[i]=new int[Temp2]
=>也就是int a[Temp1][Temp2]
[指定三維陣列]
int ***a
a=new int **[Temp1]
for(i=0;i<Temp1;i++)
a[i]=new int *[Temp2]
for(i=0;i<Temp1;i++)
for(j=0;j<Temp2;j++)
a[i][j]=new int [Temp3]
=>也就是int a[Temp1][Temp2][Temp3]
※要特別注意*號遞減的關係
張貼留言