#include<stdio.h>
#include<stdlib.h>
int* fun(int *a) {
int *c = (int*)malloc(2 * sizeof(int));
for (int i = 0; i < 5; i++) {
c[i] = a[i];
}
return c;
}
int main() {
int a[5] = {1, 2, 3, 4, 5}, *b;
b = fun(a);
for (int i = 0; i < 5; i++) {
printf("%d ", b[i]);
}
return 0;
}
我只动态分配了8个字节,应该是只能存2个int的,应该只能返回出2个元素,输出的结果应该是1 2。可是子函数却完整的把数组返回回来了。
malloc函数只分配了8个字节,那8个字节之外的字节应该不在堆区而在栈区,那么这些字节应该随着函数的结束而被释放啊?