#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。