#include<iostream> #include <new> using namespace std; int main() { /** * 动态内存 * url: http://www.cplusplus.com/doc/tutorial/dynamic/ * 关键字new用于在程序运行时动态开辟内存,内存开辟在堆空间. * 此关键字不保证内存一定开辟成功,如果开辟失败,抛出bad_alloc异常,如果此异常没有指定的异常handle,程序就会终止. */ int * foo = nullptr; foo = new int[5]; // if allocation fails, an exception is thrown //另一个方法是nothrow,使用此方法,内存开辟失败,返回null,而不是抛出异常让程序终止 //此方法声明在new文件头内 foo = new (std::nothrow) int[5]; if(foo == nullptr) { } else { foo[0] = 1; cout << foo[0] << endl; delete[] foo; } //内存不在使用,删除内存,delete int i, n; int *p; cout << "how many numbers would you like to type? "; cin >> i; cout << "i=" << i << endl; p = new (std::nothrow) int[i]; if(p == nullptr) { cout << "Error: memory could not be allocated" << endl; } else { for(n = 0; n < i; n++) { cout << "enter number:"; cin >> p[n]; } cout << "you have enter:"; for(n = 0; n < i; n++) cout << p[n] << ", "; delete[] p; } return 0; }