静态的内存使用的是栈空间内存,不用程序员自己来分配。因为静态变量占用的存储空间对于编译器而言是可预计的,静态内存只需要编程的时候直接声明就可以了。与之相反动态内存则需要由程序员根据需要来自己分配并收回,动态内存是因为要执行一些因为外部请求而浮动占用内存的应用,所以动态的内存分配时候会用new关键字或malloc或calloc函数,之所以要程序员自己来分配内存是由于有时候不能确定程序要使用多少内存。比如要通过用户或者文件或者数据库中的查询结果来确定使用多少数据,这时候程序员无法在程序的编写的时候就把内存给固定分配出来。这时候必须得让程序在运行的时候自己来为自己找到可用的内存,就一定要用动态的方式来分配内存。
举个例子,根据用户的输入一个整数来确定用户要输入的数组维数,这个整数不是一定确定的数值,我们可以用一个变量n来表示,并用它接受用户的输入,再根据n来生成一个整数数组.程序不能写成int array[n]的形式,这样程序是不能编译通过的,这是因为n是一个不确定的数值。只能用new或malloc来通过用户的输入来分配内存。可以写成这样:
int n;
cout << "input n:";
cin >> n;
cout << endl;
int* iArray = new int[n];
for (int i = 0; i < n; i++)
{
cin >>iArray[i];
}