【发布时间】:2019-10-25 12:22:37
【问题描述】:
我无法理解以下程序输出的原因
#include <stdio.h>
#include <stdlib.h>
int main(){
int* ip = (int*)malloc(100*sizeof(int));
if (ip){
int i;
for (i=0; i < 100; i++)
ip[i] = i*i;
}
free(ip);
int* ip2 = (int*)malloc(10*sizeof(int));
printf("%d\n", ip[5]);
printf("%d\n", ip2[5]);
ip[5] = 10;
printf("%d\n", ip2[5]);
return 0;
}
输出显示 ip & ip2 在堆中将具有相同的引用。 当我们分配一个 100 int in(ip2) 时,它是如何为 ip1 返回相同的引用的。 它是 malloc 函数的一个特性吗? 我知道 malloc 像“新”一样工作,对吗? 如果是,那么它应该返回一些随机引用,对吧?
【问题讨论】:
-
拥有
ip后使用ip的行为是未定义的。