首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C关于异常处理的建议

C关于异常处理的建议
EN

Stack Overflow用户
提问于 2019-03-05 01:05:53
回答 1查看 57关注 0票数 1

由于我是C++的新手,我在处理我的学校作业方面遇到了麻烦。我以前从来没有提到过例外。

对于我的任务,我需要做的是创建一个异常机制来计算程序中可以分配多少内存( MB)。

我应该使用new[]运算符和catch(),并且仅限于使用一个变量。

我已经尝试了这些代码,这就是我到目前为止所得到的。我不知道我是否在正确的轨道上。任何建议都是值得感谢的。谢谢。

代码语言:javascript
复制
int main() {

  char *mem;

  unsigned long long count = 1;

  while (1) {
    mem = new char[1025 * 1054];
    if (mem == NULL)
      break;

    free(mem);
    count++;
  }

  std::cout << "count: " << count * 1024000;
}
EN

回答 1

Stack Overflow用户

发布于 2019-03-05 01:19:27

分配内存失败时,void* operator new ( std::size_t count );将抛出异常std::bad_alloc

你所要做的就是创建一个函数allocate,它在失败时使用较小的内存来调用自身;例如,你可以这样做:

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

void allocate_me(size_t size)
{
    try{
        uint64_t* a = new uint64_t[size] ;
        std::cout << "Size is : " << size << std::endl;
    }
    catch(std::bad_alloc &e)
    {
        allocate_me(size-1024);
    }
}

int main()
{
    size_t var = 1024*1024*1024;
    allocate_me(var);
    std::cout << "Hello, world!\n";
}

请注意,初始内存大小和减量取决于您的系统。

另一种解决方案是简单地查看可用的内存-在Linux中,您可以使用sysinfo或查看文件/proc/meminfo -并从这一点开始。

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

https://stackoverflow.com/questions/54988139

复制
相关文章

相似问题

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