C++ 如何知道程序最多可以申请多少内存

在分析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;
}
相关推荐
fqbqrr43 分钟前
2606C++,C++构的多态
开发语言·c++
小欣加油1 小时前
leetcode56 合并区间
c++·算法·leetcode·职场和发展
Yolo_TvT2 小时前
C++:析构函数
c++
Hello:CodeWorld4 小时前
C 风格变参 vs C++ 变参模板:核心区别与选型指南
c语言·c++·算法
搬砖魁首6 小时前
基础能力系列 - 多线程2 - 条件变量
c++·rust·条件变量·原子类型·线程同步互斥
chase_my_dream6 小时前
C++ + SLAM 高频面试问题整理
开发语言·c++·面试
牛油果子哥q6 小时前
【C++ STL string 】C++ STL string 终极精讲:底层原理、内存机制、全套API、深浅拷贝、易错坑点与工程实战规范
数据库·c++
凡人叶枫8 小时前
Effective C++ 条款04:确定对象被使用前已先被初始化
java·linux·开发语言·c++·嵌入式开发
不想写代码的星星9 小时前
std::move 根本不移动,就像老婆饼里没有老婆
c++
redaijufeng9 小时前
C++雾中风景7:闭包
c++·算法·风景