我想检查内存分配时是否有错误。我使用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;
}
我应该添加一些额外的标题吗?