Nothrow不工作

时间:2017-02-27 09:25:51

标签: c++ memory new-operator dynamic-memory-allocation

我想检查内存分配时是否有错误。我使用new(nothrow)运算符,但在VS2013中编译后仍然发生错误。我的意思是它应该打印"错误:无法分配内存。",而不是我得到Windows MessageBox"无效的分配大小"。我不想要Windows消息和终止。我想在控制台上打印它,这就是我使用 new(nothrow)的原因。它应该返回null,但就我而言,它不起作用。我做错了什么:

#include "stdafx.h"
#include <iostream>
#include <new>
using namespace std;

int main()
{
    int i, n;
    int* p;
    cout << "Count of numbers: ";
    cin >> i;
    p = new (nothrow) int[i];
    if (p == nullptr)
    {
        cout << "Error: could not allocate memory.";
    }
    else
    {
        for (n = 0; n < i; n++)
        {
            cout << "Enter " << n + 1 << " number: ";
            cin >> p[n];
        }
        cout << "Numbers entered: " << endl;
        for (n = 0; n < i; n++)
        {
            cout << p[n] << ", ";
        }
        delete[] p;
    }


    int wait = 0;
    cin >> wait;
    return 0;
}

我应该添加一些额外的标题吗?

0 个答案:

没有答案