#include<stdio.h>
#include <stdlib.h>
int *ip_range ;
int main()
{
ip_range = (int *) malloc(1);
ip_range[0]=2;
ip_range[10]=2;
ip_range[20]=2;
ip_range[33787]=12444;
printf("%d\n", ip_range[33787]);
}
我只有 1 个 malloc,那么为什么它可以访问到 33787 并在 33788 上生成核心。
最佳答案
您正在写入您现在拥有的内存,即没有被 malloc
、 calloc
或 realloc
交还。这导致 undefined behaviour 。您的程序可以做任何事情,包括不产生任何错误消息或核心转储。
关于c - 不是一代核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51436001/