如何测试可用内存限制(C ++)?

时间:2014-04-16 15:57:51

标签: c++ memory dynamic constructor allocation

我必须通过设置构造函数的值来检查PC可用内存的限制。应该动态分配内存。例如:

  class matrix{

    int lines;
    int columns;

public:
    matrix(long lin, long col){
        lines=lin;
        columns=col;
       }
};

如何检查哪些值(lin,col)是我记忆的极限? (长型只是一个例子)。

///编辑: “通过引入增加的值(矩阵的维度)导致内存分配失败的情况” 所以问题是:是否有可能检查哪些值是最后可以引入的值?

3 个答案:

答案 0 :(得分:5)

  

应该动态分配内存

您不需要测试可用内存 - operator new会为您执行此操作(除非它当然超载)。如果operator new失败,则会引发std::bad_alloc或返回0,具体取决于您call的运营商版本。

答案 1 :(得分:0)

操作系统将为您提供所需的内存,直到您的进程的地址空间已满。当物理内存耗尽时,它不会停止。

这意味着无法通过分配内存来计算计算机具有多少物理内存,即使计算机超出物理内存,分配也不会失败。后一种属性可以让你摆脱首先找到多少物理记忆的负担。

答案 2 :(得分:0)

您可以尝试使用GlobalMemoryStatusEx函数调用Windows API并询问可用内存量。有关详情,请参阅此处:http://msdn.microsoft.com/en-us/library/windows/desktop/aa366589%28v=vs.85%29.aspx