成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解析C++對象在堆棧區的析構

開發 后端
本文介紹的是C++對象在堆棧區的析構是怎么完成的,希望對你有幫助,一起來看。

關于堆棧區和析構函數,我想大家都已經很熟悉了。下面介紹的是C++對象在堆棧區的析構。

作為一個C++程序員,區別于其他面向對象語言其中最敏感的就是對new(malloc)和delete(free)這兩個關鍵字了。

今天在閱讀老大的代碼的時候,在COM對象的重復賦值的時候發現在對一個vector重新分配的insert新元素的時候,沒有先clear掉。自己以前在用STL的容器的時候總是在開頭和***調用clear,但是進過實驗和調試之后發現,含有vector的對象在析構的時候就是不做vector.clear()的話,vector中的元素也能析構。

后來稍微一想,就發現自己之前的想法是多愚蠢,STL的容器都是C++對象,既然是對象肯定會在自己的析構函數中做一些清理,如果連這些都沒有的話,那STL也不會發展成C++***的一個庫了。

由此又想到了很多,vector在clear到底干了什么,從匯編的角度來說,在棧上的一切變量都是不會導致內存泄露的,那么vector是否真的不用去調用clear呢?錯,vector的元素肯定不會是建立在棧上的,而是建立在堆上的。為什么,建立在棧上的數組大小肯定是在編譯時候就確定的,為什么?想到了在學校時候的一個非常典型的例子:

 

  1. int x;  
  2. scanf("%d", &x);  
  3. char ch[x]; 

 

試圖通過輸入一個數字來分配對象的x個字符,這是不行的,為什么?當時老師只說這是在編譯時期確定的,不能動態確定,只能寫成

 

  1. int x;  
  2. scanf("%d", &x);  
  3. char* ch = new char[x]; 

 

這已經是分配在堆上了,以后再運行期動態確定。那到底為什么棧上的空間不能在運行期動態確定呢?從匯編的角度來理解就容易多了:棧上能夠移動的元素總是在棧頂的,無非就是Push,Pop

 

  1. char ch[x];  
  2. int i,j; 

 

試想一下,面對這樣的動態分配,該怎樣生成指令來制定棧的建立呢,由于在建立棧的時候每一個指令在棧中需要占用的大小,堆中就不一樣了,堆中內存可以是不連續的,不用遵循FILO的棧原則,所以是相當靈活的。

現在來看為什么STL的容器都是建立在堆上的,STL的容器往往都是可以調整大小的,試問建立在棧上的元素,如何能保證它在任何時候都能調整大小呢,除非在任何時候都能保證它在棧頂,顯然這是不現實的!

 

本文地址:http://blog.csdn.net/woshishenguanyear/archive/2011/06/13/6542527.aspx

【編輯推薦】

  1. C++和Java 的缺省初始化問題
  2. 談C#與C++在靜態構造函數上的區別
  3. C++程序中可以命名的5種元素
  4. C++中的指針用法匯集
  5. C++連接mysql數據庫的兩種方法
責任編輯:于鐵 來源: CSDN博客
相關推薦

2024-12-11 16:00:00

C++函數編譯器

2025-02-18 00:08:00

代碼C++RAII

2011-07-15 01:29:39

C++析構函數

2010-02-04 16:39:26

C++析構函數

2010-01-18 15:53:27

C++析構函數

2010-02-05 13:35:19

C++虛析構函數

2024-12-19 14:42:15

C++內存泄漏內存管理

2010-01-27 16:05:06

C++堆棧

2009-09-02 10:49:46

C#調用析構方法

2009-08-14 17:24:28

C#構造函數和析構函數

2009-07-30 15:24:13

C#析構函數C#構造函數

2010-01-14 09:27:44

C++語言

2009-09-03 13:14:55

C#構造函數C#析構函數

2025-04-11 07:50:00

虛析構函數C++開發

2023-10-11 14:18:40

C#.Net析構

2009-11-24 16:18:14

PHP5析構函數

2024-01-03 13:38:00

C++面向對象編程OOP

2021-12-11 19:02:03

函數C++對象

2010-01-20 14:25:56

函數調用

2010-10-25 10:05:03

ibmdwLinux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 狠狠干美女 | 天堂综合网久久 | 成人在线观看免费观看 | 日本在线免费看最新的电影 | 视频精品一区二区三区 | 99久久久久国产精品免费 | 国产精品www | 国产激情一区二区三区 | 久久亚洲一区 | 国产成人jvid在线播放 | 日日碰狠狠躁久久躁婷婷 | www.三级 | 欧美黄色小视频 | 天天影视亚洲综合网 | 欧美一级在线免费观看 | 国产电影一区二区在线观看 | 美国一级片在线观看 | 亚洲 欧美 精品 | 97视频在线观看免费 | 亚洲综合二区 | 欧美日韩一区二区三区四区 | 在线播放中文字幕 | 日韩三级在线观看 | 成在线人视频免费视频 | 色精品视频 | 国产免费xxx | 国产视频三区 | 午夜精品网站 | 一区在线观看 | 91精品国产欧美一区二区成人 | 99tv| 国产福利在线小视频 | 天天干天天干 | 欧美日韩中文字幕在线 | www.色五月.com | 日韩精品免费播放 | 色小姐综合网 | 国产精品国产三级国产a | 毛片免费观看 | 不卡在线视频 | 亚洲国产在 |