【发布时间】:2013-06-27 23:43:22
【问题描述】:
我是 C 编程的新手(经过很长时间重新学习)。我正在尝试使用 malloc 将内存动态分配给二维数组。我已经尝试按照this 和this 等stackoverflow 上的答案进行操作。但我仍然遇到分段错误。
我的代码如下
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
void allocate2DArray(int **subset, int a, int b)
{
subset = (int **)malloc( a * sizeof(int *));
int i,j;
for(i = 0 ; i < a ; i++)
subset[i] = (int *) malloc( b * sizeof(int));
for(i = 0 ; i < a ; i++)
for(j = 0 ; j < b ; j++)
subset[i][j] = 0;
}
int main()
{
int **subset;
int a = 4, b = 4;
allocate2DArray(subset, a, b);
int i,j;
for( i = 0 ; i < a ; i++)
{
for( j = 0 ; j < b ; j++)
{
printf("%d ", subset[i][j]);
}
printf("\n");
}
}
当我注释行以打印数组时,它不会给出任何错误并且程序在没有分段错误的情况下执行。请帮助我了解我哪里出错了。
【问题讨论】:
-
C 中的函数参数按值传递。所以你在
main中的函数调用什么都不做(除了内存泄漏)。
标签: c multidimensional-array malloc