0

我有一个程序使用大量内存进行计算。不会太多,我猜。当然,所有 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——现在需要找出问题所在,不想不了解就离开这个问题。感谢帖子的风格更正!

4

1 回答 1

1

使用std::vector. 您的错误基本上是访问您不再拥有的内存-因为您已经释放它或超过了结尾或类似的东西。您需要使用基于类的解决方案来防止此问题。

于 2012-06-16T14:57:37.460 回答