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

int main()
{
    int *numeros = malloc(sizeof(int) * 3 * 3);
    numeros[900] = 10;
    printf("%d", numeros[900]);
    free(numeros);
    return 0;
}

为什么在我没有分配足够内存的情况下,这个会打印出10个?
我很确定我在指针上遗漏了一些重要的东西。
谢谢你的帮助

最佳答案

您观察到的是未定义的行为—您在分配的缓冲区外写入,并可能覆盖一些恰好映射到进程中的内存。
根据不同的因素,这可能会导致程序崩溃,或者什么也不做,或者损坏程序中的数据。不要这样做,只访问你合法分配的内存。
另请参见this related question

10-06 01:14