【发布时间】:2018-02-04 14:42:02
【问题描述】:
我的问题很简单。
我正在构建一个小程序来使用马尔可夫链分析和模拟随机文本。我的第一个 MC 的内存大小为 2,处理字母表 {a, b, ..., z}。因此,我的转换矩阵大小为 26 * 26 * 26。
但是现在,我想使用内存大小为 4 的 MC 来增强我的模拟。因此,我需要将我的转换概率存储在大小为 26*26*26*26*26 的 5D 数组中。
问题是(我相信),C 不允许我声明和操作这样的数组,因为它可能太大了。其实我在写的时候得到了segmentation faults 11提示:
整数计数[26][26][26][26][26]
有没有办法绕过这个限制?
谢谢!
【问题讨论】:
-
在堆上分配你的数组,而不是在栈上。
-
我认为对于这种情况(一个小型的独立程序),将其声明为静态或全局变量实际上是最简洁的选择 - 目前的答案没有强调这一点。
-
大约 4700 万个条目!这将超过堆栈的可用大小(尤其是在 Windows 上)建议将该数组声明移动到“文件全局空间”。 IE。在任何函数定义之外。