首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么2^80字节的内存分配不会失败?

为什么2^80字节的内存分配不会失败?
EN

Stack Overflow用户
提问于 2012-09-20 14:59:06
回答 5查看 1K关注 0票数 16

下面的代码不会抛出异常,并输出“成功”。为什么?

代码语言:javascript
运行
复制
#include <iostream>

int main() 
{
    size_t size = size_t(1024)*1024*1024*1024*1024*1024*1024*1024;
    char* data = new char[size];

    if (data == NULL)
        std::cout << "fail" << std::endl;
    else
        std::cout << "success" << std::endl;

    return 0;
}

  • 编译器: g++ ( Ubuntu /Linaro 4.6.3-1ubuntu5) 4.6.3
  • 操作系统:Ubuntu 12.04
  • 内存:8 GB

如果这就是它的工作方式,我如何检查我是否有足够的内存?

编辑:让我愚蠢的代码更正确了一点,现在如果我删除两个*1024,它至少会在x64上失败

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12507456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档