青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

關于c++對象全局對象析構的幾點記錄

Posted on 2009-02-25 20:35 藍塵 閱讀(1589) 評論(2)  編輯 收藏 引用 所屬分類: C++
#include<iostream>
using std::cout;
using std::endl;
class CDust{
public:
    CDust()
    {
        cout 
<< " CDust constructor " << endl;
    }

    
~CDust()
    {

        cout 
<< " ~CFoo destructor " << endl;
    }
};


CDust A;

int main()
{
    
return 0;
}
我想類似的代碼在網上Google下應該有不少
嘗試了下,在vc6.0的情況下,是沒有輸出 "~CFoo destructor", 但這并不代表 ~CDust() 沒有執行.
在~CDust里面設置斷點,會發現事實上程序運行時進入了析構函數里  // -_! 表達好牽強
本來想實在跟蹤這里開始程序發生了什么調用了什么,發現功底不足,完全不明白,就先打斷了
而再在' return 0 ' 語句前面加上斷點,會看到這個新加的斷點比析構里面的斷點先到達,... 
以現在c++的造詣和vc6.0的了解情況來看,頭痛了
為什么 return 0 后程序不是正常結束了才去執行 全局對象的析構?

改寫下代碼
#include<iostream.h>

class CDust{
public:
    CDust()
    {
        cout 
<< " CDust constructor " << endl;
    }

    
~CDust()
    {

        cout 
<< " ~CFoo destructor " << endl;
    }
};


CDust A;

int main()
{

    
return 0;

}

這樣用舊版本的頭文件實現,控制臺輸出了意外的兩個調用 --- 析構函數輸出顯示了..

是cout在頭文件的實現方式不同?

在dev-c++里面,運行第一代代碼
根據斷點的設置測試,也是先執行了 main()函數里面的 return 0 才進入全局函數的析構,也能發現析構函數里面的輸出被調用了,控制臺有明確的顯示
這樣一來,又不明白了...
在vc6.0里面為什么執行了全局函數的析構卻沒有所謂的輸出?
是因為cmd控制臺在'return 0'程序權限收回  // 好像扯到系統的一些混亂的舊記憶了...

網游了一下
找到暫時比較清晰的說法是:
   In C++, the constructor of a global object is executed before the main() function(of course after the STARTUP code), while the destructor
is invoked after the main() function. So in my humble opinion, the main() function is a bridge between the constructor and the destructor.Further more, the constructor and the destructor is the actual manager of the whole program, because they can manage all the
resources of the program(for instance, the constructor allocate memory units and the destructor free them.I'am not sure of this, any comments will be appreciated in advance.).
4)In C++, is it true that the resources obtained during the constructor and the destructor (both belong to a global object)are managed by themselves and have nothing with the main() function.Therfore, I think the main() function is not the king in C++ as it is in C. 
   //感謝提出此說法的朋友
 
  _startup才是用戶程序的起點和終點? 的確,調用_exit()函數再斷點測試,全局對象的destructor是沒有進入的機會   //長見識了

  就此先打斷... 再深入今晚就這樣完了.
  就此記錄下,以后再接觸



不小心又接觸了...
懶得開新的就集中在這里吧

在main()里面手動調用全局對象的析構, 最后程序都會執行兩次析構調用... 在<iostream.h>的cout這種情況下明顯,在std::cout下還得靠斷點設置才能體現到(vc6的情況)
     這里是一種解析
     {
      Once a destructor is invoked for an object, the object no longer exists; the behavior is undefined if the destructor is invoked for an object whose lifetime has ended. [Example: if the destructor for an automatic object is explicitly invoked, and the block is subsequently left in a manner that would ordinarily invoke implicit destruction of the object, the behavior is undefined
}
     非global static object 也會出現兩次調用, 區別只在與一個在main() 退出之前,一個在之后...
(的確,手工調用析構函數的情況很少出現  -_! )
     如果我在析構里面存在 釋放內存 這一類實現, 那第二次再次釋放不是容易出問題!!!
     以后遇到這種情況得注意檢測代碼的添加...

Feedback

# re: 關于c++對象全局對象析構的幾點記錄  回復  更多評論   

2009-02-26 12:05 by 陳梓瀚(vczh)
說不定因為cout被析構了,你的代碼就沒看到輸出了。

# re: 關于c++對象全局對象析構的幾點記錄  回復  更多評論   

2009-02-27 19:28 by 藍塵
@陳梓瀚(vczh)
std::cout 被析構, 而且是只在vc6.0下面的 global static object ? 也就是說剩下的就是編譯器的實現問題了(網上的說法好像只有std::cout在vc6有這個情況)
等有時間時調試跟蹤下...
多謝提醒了

Copyright © 藍塵

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲日本成人在线观看| 国产一区91| 日韩午夜一区| 夜夜嗨av一区二区三区网页| 欧美视频免费在线观看| 亚洲欧美激情一区| 亚洲尤物在线| 亚洲国产精品久久久久| 亚洲欧洲在线看| 欧美日韩亚洲一区三区| 欧美中文字幕| 欧美成人自拍| 亚洲欧美三级在线| 久久一区二区三区国产精品| 亚洲片区在线| 亚洲欧美国产一区二区三区| 一区二区三区在线免费观看| 亚洲精品一区二区三区99| 国产精品美女www爽爽爽| 免费观看在线综合| 国产精品乱码一区二区三区| 美女在线一区二区| 国产精品久久久久久影视| 美女视频黄免费的久久| 欧美视频日韩| 欧美成人国产va精品日本一级| 欧美三级不卡| 欧美激情女人20p| 国产日韩精品一区二区| 亚洲精品国产精品国自产在线| 国产麻豆精品theporn| 亚洲第一页在线| 国产亚洲欧美一区| 日韩一级欧洲| 亚洲人成人77777线观看| 午夜在线精品| 亚洲影院在线观看| 欧美黄色网络| 欧美激情精品久久久久久黑人| 国产精品丝袜xxxxxxx| 亚洲黄色影院| 亚洲国产综合在线看不卡| 欧美亚洲色图校园春色| 亚洲一区二区三| 欧美激情第1页| 亚洲福利在线看| 在线观看欧美激情| 久久爱91午夜羞羞| 欧美综合国产精品久久丁香| 国产精品av久久久久久麻豆网| 亚洲国产成人精品久久| 在线观看欧美黄色| 久久久欧美一区二区| 久久精品免费观看| 国产在线观看精品一区二区三区| 亚洲视频在线一区| 亚洲一区中文| 欧美视频精品在线| 9l国产精品久久久久麻豆| 日韩午夜三级在线| 欧美久久久久| aⅴ色国产欧美| 亚洲一区二区在线免费观看| 欧美日产国产成人免费图片| 亚洲人妖在线| 亚洲视频导航| 国产精品久久久久婷婷| 亚洲一区二区三区在线播放| 亚洲欧洲av一区二区| 国产精品美女久久久久av超清| 亚洲一级黄色片| 欧美一区二区三区婷婷月色| 国产亚洲精品7777| 久久天天躁狠狠躁夜夜av| 欧美高清视频| 一区二区三区成人精品| 国产精品成人午夜| 午夜日韩电影| 欧美国产激情| 亚洲午夜伦理| 国产一区二区日韩| 六月丁香综合| 99国内精品久久| 久久九九精品| 亚洲精品老司机| 国产精品高潮呻吟久久av无限| 亚洲欧美中文日韩在线| 另类欧美日韩国产在线| 亚洲国内高清视频| 国产精品卡一卡二卡三| 久久久久久久91| 日韩视频精品在线观看| 久久精品国产96久久久香蕉| 亚洲国产欧美不卡在线观看| 欧美日韩综合久久| 久久国产天堂福利天堂| 亚洲精品视频在线看| 久久精品视频一| 日韩一级精品| 狠狠v欧美v日韩v亚洲ⅴ| 欧美成人一区二区三区在线观看| 国产精品99久久99久久久二8| 麻豆精品91| 亚洲免费一在线| 亚洲电影在线播放| 国产精品成人aaaaa网站| 久久久水蜜桃| 亚洲免费小视频| 91久久中文字幕| 久久亚洲精品视频| 亚洲一区网站| 亚洲久久在线| 尤物99国产成人精品视频| 国产精品每日更新在线播放网址| 免播放器亚洲一区| 久久成人精品无人区| 亚洲丝袜av一区| 亚洲欧洲一区二区三区| 米奇777超碰欧美日韩亚洲| 午夜在线观看免费一区| 99精品视频免费全部在线| 在线观看三级视频欧美| 国产色产综合产在线视频| 国产精品videosex极品| 欧美激情久久久久| 美女性感视频久久久| 久久精品国产99| 香蕉免费一区二区三区在线观看| 一区二区三区国产| 亚洲人成77777在线观看网| 女主播福利一区| 欧美xxxx在线观看| 米奇777超碰欧美日韩亚洲| 久久天天躁夜夜躁狠狠躁2022| 亚洲欧美日韩天堂| 午夜精品久久久久久久99热浪潮 | 亚洲欧美日韩国产一区二区三区 | 亚洲国产高清一区| 欧美黄色小视频| 欧美1区2区| 欧美电影打屁股sp| 亚洲电影在线播放| 亚洲黄色成人| 亚洲免费av片| 亚洲午夜精品网| 午夜精品福利一区二区蜜股av| 亚洲一区二区伦理| 午夜精品视频| 久久蜜桃精品| 欧美大片第1页| 欧美日本在线一区| 国产精品av久久久久久麻豆网| 国产精品久久久久久亚洲毛片| 国产精品私人影院| 国产一区二区观看| 91久久嫩草影院一区二区| 99视频精品免费观看| 亚洲欧美美女| 久久久精品国产一区二区三区| 美女精品视频一区| 最新国产拍偷乱拍精品| 中国成人黄色视屏| 欧美亚洲在线| 麻豆久久婷婷| 欧美性猛交xxxx乱大交退制版| 国产免费亚洲高清| 亚洲第一区在线| 亚洲一区二区三区四区五区黄 | 亚洲综合国产精品| 久久久爽爽爽美女图片| 亚洲国产精品高清久久久| 亚洲天堂男人| 毛片一区二区| 欧美视频不卡| 在线国产精品一区| 亚洲一区二区网站| 免费中文日韩| 中文高清一区| 麻豆成人综合网| 国产精品毛片| 亚洲国产一区二区三区青草影视| 亚洲午夜一区二区三区| 美女任你摸久久| 亚洲一区亚洲| 欧美另类专区| 国内自拍视频一区二区三区| 制服丝袜激情欧洲亚洲| 裸体一区二区三区| 亚洲一区二区三区久久| 欧美11—12娇小xxxx| 国产视频亚洲| 亚洲一区亚洲二区| 亚洲精品1区| 久久视频免费观看| 老妇喷水一区二区三区| 免费欧美高清视频| 国产日韩欧美视频在线| 亚洲国产日日夜夜| 久久久精品国产一区二区三区| 亚洲美女区一区|