我正在尝试根据命令行参数在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中可能做错了什么?
答案 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));
}