在分析dmp的时候,有时我们会怀疑是因为内存无法完成分配而导致的崩溃,那么如何知道一台机器最多可以申请多少内存,并且不会导致程序崩溃呢?
以下是一段申请内存的示例代码:初始化时,我们先申请2000M的内存,之后每次申请50M的内存,用户每输入一次就申请50M内存,直至程序抛出异常。这时就可以知道大概申请了多少内存了
cpp
#include <iostream>
#include <vector>
#include <windows.h>
#include <Psapi.h>
//#pragma comment (lib,"Psapi.lib")
using namespace std;
int main(int argc, char *argv[])
{
std::vector<int64_t*> memorys;
//初始化申请2000M的内存(40*50=2000M)
for (int i = 0; i < 40; ++i) {
int64_t* p = (int64_t*)new char[1024 * 1024 * 50]();
memorys.push_back(p);
}
std::cout << "init finish!" << std::endl;
int n = 0;
while (true)
{
n++;
int a = std::cin.get();
//char* p = new char[1024 * 1024 * 30]();
//memorys.push_back(p);
//每次申请50M的内存
int64_t* p = (int64_t*)new char[1024 * 1024 * 50]();
memorys.push_back(p);
std::cout << n << " 50M added!" << std::endl;
}
return 0;
}