C-使用malloc创建的数组大于定义的大小

时间:2018-10-11 17:46:33

标签: c arrays memory malloc

我正在使用malloc创建一个数组,如下所示:

#include <stdio.h>
#include <stdlib.h>

void main(){
    int * m = malloc(3 * sizeof(int));
    int i;
    m[0] = 1;
    m[1] = 2;
    m[2] = 3;

    for (i = 0; i < 20; i++){
        printf("%d \n", m[i]);
    }

    getchar();
}

如您所见,数组应为三个整数的大小。

我定义了前三个元素,然后从数组中打印出20个元素。但这怎么可能呢?如果malloc向数组分配了三个整数的内存,那么为什么数组仍然包含最初三个元素之后的其他数据?也许我误解了malloc的工作原理,在这种情况下,如何定义一个严格大小的数组,该数组将不包含我未添加到其中的随机数据?

谢谢

0 个答案:

没有答案