<分区>
我编写了这个简单的代码来测试我拥有的更大的实现,但我得到了垃圾值和段错误。一种解决方案是将 int* a 和 int* b 声明为全局并取出 fill 的参数。我的问题是,两种情况下内存处理的考虑因素是什么,为什么会抛出错误?
#include <stdio.h>
#include<stdlib.h>
#define LENGTH 4
void fill(int* a, int* b){
a = (int*) malloc(LENGTH * sizeof(int));
b = (int*) malloc(LENGTH * sizeof(int));
for(int i=0; i< LENGTH;i++){
a[i]=i;
b[i]=i+10;
}
}
void printArray(int* a, int* b){
for(int i = 0 ; i < LENGTH; i++)
printf("%d\n",a[i] );
for(int i = 0 ; i < LENGTH; i++)
printf("%d\n",b[i] );
}
int main(){
int* a;
int* b;
fill(a,b);
printArray(a,b);
}