C++动态数组
1.为什么会有C++动态数组?
动态数组和普通数组的最重要的区别就是在我们设计程序的时候,在这个程序执行之前,普通数组已经分配好了内存,并且限制了大小。而当我们需要在程序执行时(runtime)动态的分配内存,就需要用到动态数组。而且,new和delete操作时C++独有的,C没有n
2. 动态内存分配操作?
pointer = new type
pointer = new type [number_of_elements]
返回值是一个指向第一个元素的指针
3、如何检测是否分配好了内存?
两种方法:1、异常处理,是new的默认方法,一般以结束程序。
2、使用nothrow eg. bobby = new (nothrow) int [5]; 其将返回一个空指针。
eg.
int * bobby;
bobby = new (nothrow) int [5];
if (bobby == 0) //空指针 null
{
// error assigning memory. Take measures.
};
4、动态内存释放操作?
delete pointer;
delete [] pointer; // []里面没东西,就表示删除一个内存块
5、程序实例
// rememb-o-matic #include <iostream> #include <new> using namespace std; int main () { int i,n; int * p; cout << "How many numbers would you like to type? "; cin >> i; p= new (nothrow) int[i]; if (p == 0) cout << "Error: memory could not be allocated"; else { for (n=0; n<i; n++) { cout << "Enter number: "; cin >> p[n]; } cout << "You have entered: "; for (n=0; n<i; n++) cout << p[n] << ", "; delete[] p; } return 0; }
运行结果:
How many numbers would you like to type? 5 Enter number : 75 Enter number : 436 Enter number : 1067 Enter number : 8 Enter number : 32 You have entered: 75, 436, 1067, 8, 32,