静态内存 动态内存 区别

来源:百度知道 编辑:UC知道 时间:2024/07/06 20:21:27
c++中 静态内存和动态内存的特点,区别什么什么 ??
特别是有什么用(在程序中)!!
谢谢 !!!
急求 !!!在线问!!

静态的内存使用的是栈空间内存,不用程序员自己来分配.动态内存由程序员根据需要来自己分配并收回.
最大的区别在于动态的内存分配时候会用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];
}

静态内存 系统分给一定的内存后不再变化了

动态内存 系统开始不分配内存,运行时根据需要分配

静态内存是在程序一开始运行就会分配内存,直到程序结束了,内存才被释放。
动态内存是在程序调用在程序中定义的函数时才被分配,函数调用结束了,动态内存就释放。
static int a;这是定义了一个静态的变量
int a;这是定义了一个动态的变量;
静态内存可以用于求阶层。
例如:
jiechen(int i)
{static int a=1;
for(;a<=i,a++)
return a*i;
}
#include"stdio.h"
main()<