c中出现异常抛出错误

时间:2016-06-12 15:08:10

标签: c

我试图在C中创建一个包含89401个元素的一维数组:

double **A = (double**)malloc(89401*sizeof(double*)); 

for (i = 0; i<89401; i++)       

    A[i] = (double*)malloc(89401*sizeof(double));

但我一直收到这个错误:

Exception thrown at 0x003F61E0 in final project 2.exe: 0xC0000005: Access violation writing location 0x00000000.

我无法弄清问题是什么。我在网站上搜索了之前提出的问题,但没有一个问题对我有所帮助。

如果存在此异常的处理程序,则可以安全地继续该程序。

1 个答案:

答案 0 :(得分:1)

你犯了两个错误。 首先,你说,你试图创建“大小为89401的1d阵列”。实际上你试图分配89401 * 89401双打,这似乎是2D阵列。正如@MikeCAT所写,这是一个巨大的数字,89401 * 89401 * 8字节,如果你有8个字节的双倍。 第二个是当malloc的内存分配不成功时,即当结果为NULL时,你不处理。