【发布时间】:2021-01-06 18:10:24
【问题描述】:
我用 malloc 分配了 1 个字节,但我可以在这个数组中放置超过 1 个整数,其中 ptr 指向数组的第一个元素。这怎么可能?
int main(){
int *ptr = (int*)malloc(sizeof(int));
ptr[1] = 5;
ptr[10] = 12;
printf("%d %d\n",ptr[1], ptr[10]);
}
输出:5 12
【问题讨论】:
-
未定义的行为。
-
我知道我的问题是为什么不给出任何错误。我分配了 1 个 int 字节所以 4 字节但我可以放置 2. 和 11. 元素并打印。为什么??
-
因为正如@EOF 所说,行为未定义
标签: c memory dynamic malloc allocation