带有malloc()错误的2D数组

时间:2016-04-18 02:05:59

标签: c multidimensional-array dynamic malloc 2d

我正在尝试根据命令行参数在c中动态分配数组,但是我收到了异常错误。我做错了什么?

int **array =(int**)malloc(Argument1);
for(a=0;a<Argument2;a++)
    array[a]=(int*)malloc(Argument2);

并且在以下情况之后抛出了异常:

__forceinline void * __cdecl _heap_alloc (size_t size)
{ 
 //stuff here
 return HeapAlloc(_crtheap, 0, size ? size : 1); }

我经过了一次for循环,然后在尝试读取数据时遇到了访问错误,但每次都会触发断点。我在Visual Studio中可能做错了什么?

1 个答案:

答案 0 :(得分:0)

malloc函数的参数是以字节为单位的大小,而不是元素的数量,因为malloc无法知道每个元素的大小。 循环也应该遍历Argument1,而不是Argument2。

试试这个:

int **array = malloc(arg1 * sizeof(int*));
for (int I = 0; I < arg1; I++) {
    array[I] = malloc(arg2 * sizeof(int));
}