昨天我们在课堂上看到了这个节目,我对它的输出有疑问.
malloc.c:
#include <stdlib.h>
int *create_array(int);
int *create_array(int elements) {
int i,*x = (int *) malloc(elements*sizeof(int));
for(i=0;i < elements;i++) {
x[i] = i;
}
free(x);
return x;
}
int main(void) {
int j, *arr;
arr = create_array(5);
for(j=0;j<5;j++) {
printf("%d\n",arr[j]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题(S):
当我运行程序时,我得到这个作为输出:
1627793032
1627793104
2
3
4
Run Code Online (Sandbox Code Playgroud)
但是,前2个元素不应该分别为0和1吗?这里打印的值对我来说就像是记忆地址,对不对?另外,这是由于某些错误造成的undefined behavior吗?