こんにちは私はこの質問があります:フロート配列にmallocでメモリを割り当てると、要求しているより多くのスペースが割り当てられるのはなぜですか?たとえば、このコードでは、10個の「セル」フロート配列を割り当てようとしていますが、他のセルにアクセスしようとすると、セグメンテーション違反エラーは返されません。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
float *fk_array;
int main(int argc, char** argv){
fk_array = (float *) malloc(10 * sizeof(float));
int i;
fk_array[9] = 2.23;
fk_array[15] = 0.3;
for(i = 0; i<20 ; i++)
printf("%f\n",fk_array[i]);
free(fk_array);
return 1;
}
それは私を返します:
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
2.230000
0.000000
0.000000
0.000000
0.000000
0.000000
0.300000
0.000000
0.000000
0.000000
0.000000
どこが間違っているの?