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

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

Posted on 2009-02-25 20:35 藍塵 閱讀(1603) 評論(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;
}
我想類似的代碼在網(wǎng)上Google下應該有不少
嘗試了下,在vc6.0的情況下,是沒有輸出 "~CFoo destructor", 但這并不代表 ~CDust() 沒有執(zhí)行.
在~CDust里面設置斷點,會發(fā)現(xiàn)事實上程序運行時進入了析構函數(shù)里  // -_! 表達好牽強
本來想實在跟蹤這里開始程序發(fā)生了什么調(diào)用了什么,發(fā)現(xiàn)功底不足,完全不明白,就先打斷了
而再在' return 0 ' 語句前面加上斷點,會看到這個新加的斷點比析構里面的斷點先到達,... 
以現(xiàn)在c++的造詣和vc6.0的了解情況來看,頭痛了
為什么 return 0 后程序不是正常結束了才去執(zhí)行 全局對象的析構?

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

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

    
~CDust()
    {

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


CDust A;

int main()
{

    
return 0;

}

這樣用舊版本的頭文件實現(xiàn),控制臺輸出了意外的兩個調(diào)用 --- 析構函數(shù)輸出顯示了..

是cout在頭文件的實現(xiàn)方式不同?

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

網(wǎng)游了一下
找到暫時比較清晰的說法是:
   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才是用戶程序的起點和終點? 的確,調(diào)用_exit()函數(shù)再斷點測試,全局對象的destructor是沒有進入的機會   //長見識了

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



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

在main()里面手動調(diào)用全局對象的析構, 最后程序都會執(zhí)行兩次析構調(diào)用... 在<iostream.h>的cout這種情況下明顯,在std::cout下還得靠斷點設置才能體現(xiàn)到(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 也會出現(xiàn)兩次調(diào)用, 區(qū)別只在與一個在main() 退出之前,一個在之后...
(的確,手工調(diào)用析構函數(shù)的情況很少出現(xiàn)  -_! )
     如果我在析構里面存在 釋放內(nèi)存 這一類實現(xiàn), 那第二次再次釋放不是容易出問題!!!
     以后遇到這種情況得注意檢測代碼的添加...

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 ? 也就是說剩下的就是編譯器的實現(xiàn)問題了(網(wǎng)上的說法好像只有std::cout在vc6有這個情況)
等有時間時調(diào)試跟蹤下...
多謝提醒了

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>
            亚洲精品在线观| 一区二区三区在线免费视频| 亚洲国产视频直播| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲一区影音先锋| 国产精品综合视频| 欧美一站二站| 欧美在线观看www| 韩国欧美一区| 欧美成年视频| 欧美区亚洲区| 亚洲在线成人精品| 亚洲制服av| 国内成人在线| 亚洲国产成人久久综合| 免费不卡在线观看av| 亚洲精品一级| 一区二区三欧美| 国产一区二区三区在线观看精品 | 久久精品国产999大香线蕉| 午夜一区二区三区在线观看| 国内揄拍国内精品少妇国语| 男女激情视频一区| 免费试看一区| 欧美亚洲日本国产| 久久日韩精品| 一区二区三区欧美在线| 亚洲图片在线观看| 一区久久精品| 日韩午夜激情| 精品动漫3d一区二区三区| 亚洲第一在线| 国产农村妇女毛片精品久久莱园子 | 欧美国产精品中文字幕| 亚洲图片激情小说| 久久久精品欧美丰满| 中文在线资源观看网站视频免费不卡| 亚洲一区bb| 亚洲精品国产精品国自产在线 | 国产精品久久久久一区二区三区共 | 亚洲欧美日韩国产精品| 久久国产欧美日韩精品| 亚洲一区制服诱惑| 老色鬼久久亚洲一区二区| 亚洲欧美日韩国产一区| 欧美freesex8一10精品| 欧美亚洲视频在线看网址| 欧美大学生性色视频| 久久精品亚洲精品| 欧美午夜一区| 亚洲激情一区二区| 亚洲成人资源| 久久精品国产77777蜜臀| 亚洲女人小视频在线观看| 欧美不卡福利| 欧美mv日韩mv国产网站| 国产一区二区三区免费观看| 亚洲精品人人| 亚洲精品欧洲精品| 欧美不卡视频一区发布| 久热精品视频在线免费观看| 国产一级一区二区| 午夜精品福利在线| 欧美亚洲视频一区二区| 国产精品久久久久影院亚瑟| 亚洲美女视频在线观看| 亚洲精品一区二区三区四区高清| 久久美女性网| 免费h精品视频在线播放| 黑人巨大精品欧美一区二区小视频| 亚洲午夜久久久久久尤物 | 极品少妇一区二区三区精品视频| 亚洲一本视频| 欧美影片第一页| 国产欧美韩国高清| 亚洲欧美精品| 久久久久久久精| 精品69视频一区二区三区| 欧美一区二区三区视频在线观看| 欧美一区二区免费视频| 国产日本精品| 久久不射中文字幕| 欧美96在线丨欧| 日韩午夜电影| 欧美午夜精品久久久久久久| 在线亚洲精品| 久久久福利视频| 亚洲第一福利社区| 欧美日韩高清一区| 亚洲一二三区精品| 欧美日韩久久| 99精品国产在热久久| 性欧美18~19sex高清播放| 国产一区二区三区四区三区四| 欧美综合77777色婷婷| 欧美激情一区二区久久久| 在线一区视频| 国产一区二区三区成人欧美日韩在线观看| 欧美一区二区三区免费视频| 麻豆久久精品| 亚洲一区二区三| 狠狠色狠色综合曰曰| 欧美成人精品激情在线观看| 日韩一级网站| 久久综合九色综合欧美就去吻| 亚洲国产三级在线| 国产精品美女久久久久久免费| 久久九九精品99国产精品| 亚洲国产一区二区三区高清| 午夜一区二区三视频在线观看| 精品福利免费观看| 欧美视频免费在线观看| 久久精品免费看| 在线亚洲精品| 亚洲国产成人精品女人久久久 | 999在线观看精品免费不卡网站| 国产精品久久久久三级| 久久婷婷色综合| 亚洲欧美日韩国产综合在线 | 亚洲国产精品激情在线观看| 欧美一区二区三区的| 亚洲经典自拍| 国产拍揄自揄精品视频麻豆| 欧美精品一区三区在线观看| 久久精品毛片| 午夜激情综合网| 亚洲乱码国产乱码精品精98午夜| 久久久久久久久久码影片| 亚洲综合欧美日韩| 9人人澡人人爽人人精品| 精品盗摄一区二区三区| 国产美女精品人人做人人爽| 欧美日韩国产二区| 欧美成人一区二区在线 | 日韩系列欧美系列| 欧美激情第一页xxx| 久久视频在线视频| 欧美在线网站| 午夜视频久久久| 亚洲欧美一级二级三级| 在线亚洲电影| 一区二区三欧美| 艳女tv在线观看国产一区| 亚洲人成在线播放| 亚洲国产精品ⅴa在线观看 | 欧美国产精品劲爆| 欧美成人精品h版在线观看| 久久久噜噜噜久久狠狠50岁| 午夜伦欧美伦电影理论片| 亚洲嫩草精品久久| 亚洲一区免费| 亚洲欧美日韩国产中文在线| 亚洲无人区一区| 亚洲综合色自拍一区| 午夜精品久久久99热福利| 日韩亚洲精品视频| 亚洲人成网在线播放| 亚洲日本视频| 亚洲最黄网站| 午夜精品电影| 久久不射中文字幕| 久久久久久九九九九| 免费在线看一区| 亚洲国产日韩精品| 99在线精品视频| 午夜精品久久久久久久99水蜜桃 | 欧美69视频| 最近中文字幕mv在线一区二区三区四区| 欧美国产日本韩| 日韩午夜av电影| 午夜精品久久久久久久99热浪潮| 欧美夜福利tv在线| 蜜臀av一级做a爰片久久| 欧美精品久久久久久久免费观看 | 午夜精品理论片| 久久精品在线视频| 欧美另类人妖| 国产精品视频一区二区高潮| 国产日韩欧美夫妻视频在线观看| 一区二区三区在线不卡| 日韩视频在线永久播放| 亚洲欧美在线看| 免费国产一区二区| 日韩视频欧美视频| 性做久久久久久久免费看| 欧美成人精品高清在线播放| 国产精品videosex极品| 伊人婷婷欧美激情| 亚洲一区二区在线视频| 久久亚洲色图| 中文亚洲免费| 免费在线一区二区| 国产日韩欧美另类| 日韩午夜三级在线| 久久婷婷国产麻豆91天堂| 亚洲欧洲三级| 久久久久久一区二区| 国产精品国产三级国产a| 亚洲大胆人体视频| 欧美在线影院在线视频|