C++中的动态和静态是什么意思
转载 C++只能通过变量这个映射元素来访问内存,在访问某块内存前,一定要先建立相应的映射,即定义变量。有什么坏处?让我们先来了解静态和动态是什么意思。
收银员×××,手动,则每次×××时,都用已经印好的发票联给客人×××,发票联上只印了4个格子用以记录商品的名称,当客人一次买的商品超过4种以上时,就必须开两张或多张发票。这里发票联上的格子的数量就被称作静态的,即无论任何时候任何客人买东西,×××时发票联上都印着4个记录商品名称用的格子。
超市的收银员×××,将商品名称及数量等输入电脑,然后即时打印出一张发票给客人,则不同的客人,打印出的发票的长度可能不同(有的客人买得多而有的少),此时发票的长度就称为动态的,即不同时间不同客人买东西,开出的发票长度可能不同。
程序无论执行多少遍,在申请内存时总是申请固定大小的内存,则称此内存是静态分配的。前面提出的定义变量时,编译器帮我们从栈上分配的内存就属于静态分配。每次执行程序,根据用户输入的不同而可能申请不同大小的内存时,则称此内存是动态分配的,后面说的从堆上分配就属于动态分配。
很明显,动态比静态的效率高(发票长度的利用率高),但要求更高——需要电脑和打印机,且需要收银员的素质较高(能操作电脑),而静态的要求就较低,只需要已经印好的发票联,且也只需收银员会写字即可。
同样,静态分配的内存利用率不高或运用不够灵活,但代码容易编写且运行速度较快;动态分配的内存利用率高,不过编写代码时要复杂些,需自己处理内存的管理(分配和释放)且由于这种管理的介入而运行速度较慢并代码长度增加。
静态和动态的意义不仅仅如此,其有很多的深化,如硬编码和软编码、紧耦合和松耦合,都是静态和动态的深化。
上一篇:面向对象与面向过程的区别
下一篇:堆、栈及静态数据区详解
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
c++中动态库和静态库
c++中动态库和静态库c++中动态库和静态库c++中动态库和静态库
动态库 静态库 c++ 可执行文件 linux -
C++ 中的动态库和静态库(Windows)
介绍VC环境下的动态库和静态库
c++ dll lib -
c++ [&]是什么意思
[&]代表匿名函数
c++ 匿名函数 -
java动态和静态的区别是什么意思 java静态资源和动态资源
手动开发动态资源1 静态资源和动态资源的区别 静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源。 动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变。动态资源的开发技术
java动态和静态的区别是什么意思 tomcat服务器 web应用 静态资源