我的程序包含600000个元素的大数组(每个元素都是一个结构)。 当我调试程序时,它被赋予了 OutOfMemoryException
FlightLeg *legRecord= new FlightLeg[600000];(FlightLeg is a structure)
该程序消耗大量时间,因为它必须进行多次数据处理和初始数据加载(超过两天!
所以我想在调试时进行更改。我认为将 600000 更改为较小的值会有所帮助。如果我错了,请给我任何建议。
你能告诉我有没有办法在调试时更改 600000?因为我不想丢失之前消耗两天的数据加载。
这取决于以下几点:
- 结构
sizeof
FlightLeg
。例如,如果一个FlightLeg
需要 100 字节,则需要 60,000,000 字节的内存,这是巨大的,尤其是在要分配连续内存时。 - 在多次分配如此巨大的大小后,可用于进程的内存将受到限制。您可能需要编译和构建相同的 64 位版本,以便您可以利用更多(更多)内存。
- 不建议分配此大小和此类型。你应该使用一些集合类(如
vector
、list
)来实现相同的。即使数组大小是恒定的,我也不建议编译时分配(即堆栈分配)。