我试图在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.
我无法弄清问题是什么。我在网站上搜索了之前提出的问题,但没有一个问题对我有所帮助。
如果存在此异常的处理程序,则可以安全地继续该程序。
答案 0 :(得分:1)
你犯了两个错误。 首先,你说,你试图创建“大小为89401的1d阵列”。实际上你试图分配89401 * 89401双打,这似乎是2D阵列。正如@MikeCAT所写,这是一个巨大的数字,89401 * 89401 * 8字节,如果你有8个字节的双倍。 第二个是当malloc的内存分配不成功时,即当结果为NULL时,你不处理。