问题描述
所以我的任务是编写一个模拟covid-19病假机会的程序。这是大学的任务,而不是工作。
我试图注释我的代码,以使所有人都可以阅读。
我的主要问题是,例如,当我将L的值更改为大于80的数字时,我会得到错误代码:-1073741819(0xC0000005)。
老师期望的数字是150,所以矩阵150 * 150 = 22500
代码的基本作用: 它会发现一个随机的行和列=随机的人,并检查他是否对病毒敏感(数字= 0)或是否已经生病(数字= 1)。
如果他敏感,我们会生成一个随机数,然后将其与Gamma或Beta的数量进行比较,这取决于我们是否要治愈他或让他生病。
对于我对stackoverflow的评论,我发现可能必须使它成为一个动态矩阵,但是我不知道该怎么做,因为当我尝试将其更改为以下内容时:
background-color: cadetblue
由于我不知道如何再引用矩阵的元素,所以我得到了更多错误。
我当前正在使用Code :: Blocks + GNU GCC编译器。
int *nepesseg= (int *)malloc(L*L* sizeof(int));
解决方法
0xC0000005
异常与我认为您正在使用的MS-WIN系统上的内存冲突有关。
关于代码,我看不到任何形式上的错误。无论如何,将大型数组分配为自动变量,将声明移至main
函数之外或像static
中那样用static int population[L][L];
修饰符作为前缀不是一个好主意。
无论如何,在我的系统上以L
触发最多500个内存异常并分配了1MB堆栈空间真的很奇怪。
问题可能出在您使用的编译器分配的堆栈空间太小。