私を悩ませているものがありますが、インターネットを介して答えを見つけることができません (または、少なくとも私はそれを検索する方法がわかりません)。行列のサイズを SIZE として宣言するとき、行列の最初の要素は 0 で、最後の要素は SIZE-1 であると常に考えていました。ただし、これをコンパイルすると:
#include<cstdio>
#include<cstdlib>
int main()
{
double *r;
r = new double[10];
double dr=0.1;
for(int i=0;i<=10;i++) r[i]=(double)i*dr;
for(int i=0;i<=10;i++) printf("%lf\n",r[i]);
delete [] r; r=0;
return 0;
}
エラーは通知されず (これまでに gnu、dev、および c-free の 3 つのコンパイラでこれを試しました)、exe を実行してもエラーは発生しません。結果は次のとおりです。
0.000000
0.100000
0.200000
0.300000
0.400000
0.500000
0.600000
0.700000
0.800000
0.900000
1.000000---> element SIZE, which means 11, while I have declared 10 elements.
では、問題は次のとおりです。これはどのように可能ですか?!?!!? 住所を印刷したときの結果は次のとおりです。
006E0F88
006E0F90
006E0F98
006E0FA0
006E0FA8
006E0FB0
006E0FB8
006E0FC0
006E0FC8
006E0FD0
006E0FD8---> 11th element
前もって感謝します。