我正在尝试找出一个大程序的错误。我认为这是由于我将数组传递给函数的方式造成的。我这样做正确吗?
main(){
int *x = declarArray(x, 100);
int *y = declarArray(x, 100);
// lines of code....
x = arrayManip(x, 100);
// more code...
int i;
for(i=0; i<100; i++)
y[i] = x[i];
//more code...
free(x);
free(y);
}
这就是我操作数组的方式:
int *arrayManip(int *myarray, int length){
int i;
for(i=0; i<length; i++)
myarray[i] = i;
return array;
}
这就是我初始化数组的方式:
int* declareArray(int *myarray, int length){
myarray = (int*) malloc(length*sizeof(int*));
if (myarray==NULL)
printf("Error allocating memory!\n");
int i;
for(i=0; i<length; i++)
myarray[i] = -888;
return myarray;
}
这段代码似乎在小规模上工作得很好,但是一旦我有更多更大尺寸的数组,这些数组经常在我的程序中来回传递和复制,也许就会出现问题?
最佳答案
声明数组:
- 名称语法不正确
- 函数的名称并不代表它的作用
- 使用 sizeof(int*) 进行 malloc,而不是使用 sizeof(int)。保证在 64 位机器上是一个错误
- malloc 失败,打印,但仍然写入 null
- 将 myarray 作为参数传递是一个 noop
- -888是一个神奇的数字
- 没有任何错误检查
我的建议。扔掉它并重新开始
关于c - 我是否为 C 中的指针数组正确分配了内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21092861/