我试图根据命令行参数在c中动态分配一个数组,但遇到了一个异常错误。我做错了什么?
int **array =(int**)malloc(Argument1);
for(a=0;a<Argument2;a++)
array[a]=(int*)malloc(Argument2);
并且exeption在之后抛出
__forceinline void * __cdecl _heap_alloc (size_t size)
{
//stuff here
return HeapAlloc(_crtheap, 0, size ? size : 1); }
我通过了一次for循环,然后在尝试读取数据时出现访问错误,但每隔一次它就会触发一个断点。我在Visual Studio中可能做错了什么?
malloc
函数的参数是字节大小,而不是元素数量,因为malloc无法知道每个元素的大小。此外,循环应该循环通过Argument1,而不是Argument2。
试试这个:
int **array = malloc(arg1 * sizeof(int*));
for (int I = 0; I < arg1; I++) {
array[I] = malloc(arg2 * sizeof(int));
}