2012-04-02 61 views
0

我试图建立在C++动态数组是这样的:如何解决“内存不足”在C++动态数组

int **matrix = 0;  
matrix = new int * [dim]; 
for (int i = 0; i < dim; i++) 
    matrix[i] = new int[dim]; 

当从90000“暗淡”超S,程序崩溃并给我内存不足(超过2 GB的内存)

任何想法如何解决它?请提供其他解决方案吗

+4

您应该接受一些以前的问题。 – iehrlich 2012-04-02 03:09:10

+1

如果矩阵不密集,有些方法表示它不使用大量内存。你确定你需要所有的记忆吗? – 2012-04-02 03:22:53

回答

3

要分配超过2 GB的内存,您需要编译程序并在64位操作系统上运行。

+0

没有任何其他选择? – Bipario 2012-04-02 03:11:08

+0

某些32位操作系统可以挤压少量额外的应用程序内存,可能高达3 GB。但是,这取决于操作系统,通常必须选择为OS引导选项。 – 2012-04-02 03:13:20

+0

@Bipario,或将它们写入磁盘,并在需要时将它们分页存储在内存中,或者在装配时播放并执行PAE。 – 2012-04-02 03:13:44

1

您可以尝试使用/ 3GB开关,这会在32位窗口的使用者(即:非服务器)版本上额外提供1GB。

Details of /3GB switch

+0

谢谢,但它不能解决我的问题,因为我也可能超过3 GB。我应该找到另一种方法来构建这个矩阵。但是怎么样?! :( – Bipario 2012-04-02 03:16:37

+0

@Bipario - Uhhh ...不在内存中 – 2012-04-02 03:17:27

+0

所以在哪里?任何建议?我需要建立这个矩阵,然后我想用整数填充它! – Bipario 2012-04-02 03:19:02