我必须通过设置构造函数的值来检查PC可用内存的限制。应该动态分配内存。例如:
class matrix{
int lines;
int columns;
public:
matrix(long lin, long col){
lines=lin;
columns=col;
}
};
如何检查哪些值(lin,col)是我记忆的极限? (长型只是一个例子)。
///编辑: “通过引入增加的值(矩阵的维度)导致内存分配失败的情况” 所以问题是:是否有可能检查哪些值是最后可以引入的值?
答案 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