C:malloc似乎分配更多然后我要求(数组)

Pie*_*ani 1 c arrays malloc segmentation-fault

嗨,我有这个问题:为什么当我为malloc分配一个浮点数组的内存时,它会分配更多我要求的空间?例如,在这段代码中我试图分配一个十个"单元格"浮点数组,但如果我尝试访问其他单元格,则返回我没有段错误:

#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;
}
Run Code Online (Sandbox Code Playgroud)

它回报我:

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
Run Code Online (Sandbox Code Playgroud)

我错在哪里?

Som*_*ude 5

取决于分配算法,分配的数量超过您的要求,这不是不可能的.但是,访问该内存是未定义的行为.