我有一个程序,它使用大量内存进行计算。我猜不是太多了。所有bif数组都存储在堆中。 MS VS 10是我的IDE。 Windows中的任务经理称它需要1548 Kb。我还在写它,并且在某些时候我添加了
bool* mask= new bool [numberOfUnknowns];
和numberOfUnknowns
约为1600
。它是其中一个类的公共方法(不确定它是否重要)。我得到了
ProgrammName.exe中0x777615de处的未处理异常:0xC0000005: 访问冲突写入位置0x006a2000。
在这一行。它适用于硬编码
new bool [10];
并以
失败new bool [1600];
那么,我是否达到了可能的内存大小?或者我应该检查别的东西?因为放
,我不相信我无法获得更多的记忆double* a = new double [100000];
主要用于检查的使内存大小更大,但运行时错误位于同一位置 提前谢谢。
加法1:
我在所有其他调用之前调用包含此行的方法,并且它有效。所以,我想,这是内存问题,因为在我班级的其他方法工作期间分配/释放了一些内存。那么,怎么可能呢?我应该发布一些更多的代码,还是有这种情况的通用解决方案/描述?
添加2:对于std::vector
- 需要找出现在的问题,不要在不理解的情况下留下这个问题。
感谢帖子的风格修正!
答案 0 :(得分:1)
使用std::vector
。您的错误基本上是访问您不再拥有的内存 - 或者因为您已经释放它或者已经过了结束或类似的东西。您需要使用基于类的解决方案来防止此问题。