Abh*_*nav 2 c malloc pointers heap-memory stack-memory
我试图从child_prog() to返回一个数组main()。代码如下所示:
#include<stdio.h>
#include<stdlib.h>
int* child_prog(int some_input);
void main(void){
int C[10];
int some_input;
C = child_prog(some_input);
}
int* child_prog(int some_input){
static int out[10];
// ...
// ... some wizardry
return out;
}
Run Code Online (Sandbox Code Playgroud)
现在编译器生成一个错误,说它不能分配给C(这是一种int[]类型)从child_prog(这是一种int*类型)返回的值。事实上,当我创建C一个int*和malloc它 10ints个内存时,程序运行良好。但我不明白为什么编译器不能分配给C(定义为C[10]指针child_prog的数组)从(定义为static int out[10]指针的数组)返回的值。
memcpy它。int*!= int[],而第一是一个指针,可能指向一个int序列的intS,第二是一个序列的int小号int *C;并传递数组的长度(如果在编译时未知)作为输出参数。static int out[10];不是malloced,而是静态的。