我正在尝试用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.
我不知道是什么问题。我在网站上搜索了以前提出的问题,但没有一个对我有帮助。
如果有用于此异常的处理程序,则可以安全地继续执行该程序。
最佳答案
您犯了两个错误。
您说的第一个是,您尝试创建“大小为89401的1d数组”。实际上,您尝试分配89401 * 89401双精度值,这似乎是2D数组。正如@MikeCAT所写,如果您有8字节的双精度数,这是一个庞大的数字,即89401 * 89401 * 8字节。
第二个是当malloc的内存分配不成功时,即结果为NULL时,您不处理。