【发布时间】:2016-08-09 15:00:53
【问题描述】:
我正在尝试根据命令行参数在 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 中做错了什么?
【问题讨论】:
-
那些 malloc 不可能是正确的。首先,不要在 C 中强制返回 malloc。其次,在您的循环中,您正在逐步分配越来越多的内存。第一次,1 个字节。下一次 2 个字节(总共 3 个),下一次 3 个字节,以此类推,直到达到 Argument 2 的值。
-
你是对的,它们不正确,但我正在努力弄清楚它们为什么不起作用
-
您没有显示进行访问的代码,但您说:“...尝试读取数据时出现访问错误...”
-
我猜应该是
array[a]=..而不是array[i],除非i在您未发布的代码中被初始化和更新。 -
抱歉,打错了
标签: c multidimensional-array dynamic malloc 2d