亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++未定義行為(undefined behavior)

2020-05-23 13:53:30
字體:
來源:轉載
供稿:網友

衡量一個人是否真正活著的根本方法,就是看他是否有意愿、有能力做出主動的選擇。

在計算機程序設計中,未定義行為(undefined behavior)是指行為不可預測的計算機代碼。這是一些編程語言的一個特點,最有名的是在C語言中。在這些語言中,為了簡化標準,并給予實現一定的靈活性,標準特別地規定某些操作的結果是未定義的,這意味著程序員不能預測會發生什么事。

一個問題

此問題摘自知乎:

對順序容器 ( vector ) 的訪問:

如果使用 operator[] 訪問容器,下標越界是未定義行為。
使用 at 訪問,下標越界,則拋出一個 out_of_range 異常。
下標越界應該是明顯錯誤的,但是為什么 C++ 標準選擇把 operator[] 列為未定義行為,而加入at成員在對成員訪問時進行下標檢查?

同樣摘取一些回答

回答一:

C++ 的設計理念之一,就是你不需要為你不使用的特性付出代價。如果你能確保你的下標不越界,C++就不會進行檢查。

回答二:

檢查就表示有運算判斷的開銷,C++將效率放在第一位,假設用戶之前已經對[]訪問的下標做過檢查了,在一個大量訪問的for循環中,但是vector還是自作聰明的每次都判斷一次下標越界,這個效率影響你可想而知!你會不會在這個情況下罵它管的太多呢。所以說將所有的權利都交給你,vector不做太多自作聰明的處理。

什么是未定義

未定義行為(Undefined Behavior)是指語言標準未做規定的行為。同時,標準也從沒要求編譯器判斷未定義行為,所以這些行為有編譯器自行處理,在不同的編譯器可能會產生不同的結果,又或者如果程序調用未定義的行為,可能會成功編譯,甚至一開始運行時沒有錯誤,只會在另一個系統上,甚至是在另一個日期運行失敗。當一個未定義行為的實例發生時,正如語言標準所說,“什么事情都可能發生”,也許什么都沒有發生。

下文會羅列C++中的一系列未定義結果和未定義行為,持續整理更新。

未定義的結果

1、當我們賦給帶符號類型一個超出它表示范圍的值時,結果是未定義的。

signed char c2 = 256; // c2的值是未定義的

2、函數體之內定義的變量:未初始化(uninitialized),其值undefined。

3、算術表達式有可能產生未定義的結果

數學性質本身:除數為0
計算機的特點:溢出;很多系統在編譯和運行時都不報出溢出錯誤,像其他未定義的行為一樣,溢出的結果是不可預知的。

未定義的行為

未定義行為,無法預估Runtime會發生什么(unpredictable:normal、crashing、incorrect results)。

1、解引用空指針、非法迭代器或者尾后迭代器都是未定義行為

2、訪問一個無效數組索引,下標越界

3、當derived class對象經由一個base class指針被刪除,而該base class帶著一個non-virtual析構函數,其結果是未定義的。

實際執行時通常發生的是對象的derived成員沒有被銷毀。
4、在兩個異常同時存在的情況下,程序若不是結束執行就是導致未定義行為。

5、釋放一個非new分配的內存,或者將相同的指針值釋放多次,其行為是未定義的。

6、string s(s2,pos2); // s是string s2從下標pos2開始的字符拷貝,如果pos2>s2.size(),構造函數的行為未定義

7、試圖比較兩個無關地址是未定義行為

8、對于那些沒有指定執行順序的運算符來說,如果表達式指向并修改了同一個對象,將會引發錯誤并產生未定義的行為。

int i=0;cout<<i<<" "<<++i<<endl; // 未定義// 編譯器可能先求++i的值,再求i的值;也可能先求i的值,再求++i的值。注意與print函數的區別。*beg=toupper(*beg++); // 未定義

9、對有符號數進行左移操作可能會改變符號位的值,因此是一種未定義的行為。移位運算符右側的運算對象一定不能為負,而且值必須嚴格小于結果的位數,否則就會產生未定義的行為。

10、使用static_cast將void*轉換成其他類型指針,必須確保轉換后所得的類型就是指針所指的類型。類型一旦不符,將產生未定義行為。

double d;void* p=&d;double *dp=static_cast<double*>(p);

11、const_cast只能改變運算對象的底層const,如果對象本身是一個常量,使用const_cast執行寫操作就會產生未定義行為。

12、不要使用get初始化另一個智能指針或為智能指針賦值,否則將會產生兩個獨立的shared_ptr指向相同的內存,這將產生未定義行為。

13、delete []p;如果忘記[],其行為是未定義的。 刪除單一對象的指針加[],其行為也是未定義的。

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品视频在线| 亚洲一区制服诱惑| 日韩a**站在线观看| 欧美日韩精品在线视频| 欧美电影在线观看| 中文字幕久热精品视频在线| 97久久精品在线| 日韩av不卡在线| 亚洲大胆人体在线| 亚洲一级免费视频| 亚洲精品日韩欧美| 黄色91在线观看| 午夜精品久久久久久99热| 国产精品久久久一区| 激情久久av一区av二区av三区| www日韩中文字幕在线看| 欧美影院久久久| 国产精品一区二区电影| 亚洲精品国产免费| 欧美成人三级视频网站| 国语自产精品视频在线看一大j8| 国产精品第1页| 欧美与黑人午夜性猛交久久久| 欧美激情国产日韩精品一区18| 久久精品亚洲一区| 久久99热精品这里久久精品| 国产香蕉一区二区三区在线视频| 国产精品高潮呻吟久久av无限| 成人免费视频xnxx.com| 日韩国产欧美精品在线| 日韩综合视频在线观看| 国产日韩中文字幕| 性欧美亚洲xxxx乳在线观看| 66m—66摸成人免费视频| 日韩中文字幕在线精品| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产一区二区三区18| 精品一区二区三区四区| 欧美老女人性生活| 热99久久精品| 国产精品国模在线| 亚洲免费一级电影| 亚洲视频在线观看网站| 欧美激情日韩图片| 国产一区二区三区中文| 国产xxx69麻豆国语对白| 亚洲男人天天操| 亚洲成人av资源网| 日韩av中文字幕在线免费观看| 亲子乱一区二区三区电影| 欧美中文在线字幕| 日韩在线观看你懂的| 亚洲精品国产suv| 国产精品久久视频| 国产欧美日韩亚洲精品| 国产日本欧美视频| 久久久久99精品久久久久| 欧美日韩成人在线观看| 久久久久日韩精品久久久男男| 亚洲欧洲在线视频| 国产精品久久久久久婷婷天堂| 亚洲精品国产拍免费91在线| 精品高清一区二区三区| 日韩在线高清视频| 久久久久久久影院| 欧美性猛交xxxx免费看久久久| 欧美午夜激情在线| 欧美精品www在线观看| 成人免费视频a| 亚洲欧美日韩高清| 久久国产精品视频| 国产97色在线|日韩| 欧美日韩免费观看中文| 97精品国产97久久久久久| 国产精品久久久久久av福利软件| 欧美做受高潮1| 色婷婷综合久久久久| 一级做a爰片久久毛片美女图片| 成人黄色在线免费| 久久综合色88| 538国产精品一区二区免费视频| 欧美色视频日本版| 久久这里只有精品视频首页| 久久人人爽亚洲精品天堂| 色综合五月天导航| 亚洲第一综合天堂另类专| 国产一区二区丝袜高跟鞋图片| 日韩在线观看免费全集电视剧网站| 国产精品看片资源| 国产98色在线| 日韩欧美在线看| 国产精品视频久久久| 精品国产美女在线| 欧美成人合集magnet| 91九色视频在线| 国产成人高潮免费观看精品| 国产精品福利在线观看| 国产精品久久久久久网站| 日韩精品久久久久久久玫瑰园| 国产伦精品免费视频| 亚洲欧美中文日韩在线v日本| 亚洲一区二区三区四区在线播放| 欧美日本精品在线| 日韩中文字幕精品视频| 人体精品一二三区| 中文字幕久久精品| 深夜福利亚洲导航| 国产一区二区动漫| 色老头一区二区三区| 国产成人精品视频在线| 992tv成人免费影院| 国产精品久久久久久久久久久新郎| 97在线看免费观看视频在线观看| 国产在线观看91精品一区| 91夜夜揉人人捏人人添红杏| 久久久久一本一区二区青青蜜月| 国产一区私人高清影院| 欧美黑人xxx| 国产91av在线| 久久久久久久久久久免费| 国产香蕉精品视频一区二区三区| 国产精品99免视看9| 亚洲欧美在线磁力| 国产精品成人免费视频| 这里只有精品丝袜| 人人爽久久涩噜噜噜网站| 国内精品久久久久久| 国产精品18久久久久久麻辣| 国产精品国产亚洲伊人久久| 91久久夜色精品国产网站| 久久久91精品国产一区不卡| 国产视频精品xxxx| 欧美日韩亚洲91| 日韩精品免费在线播放| 性日韩欧美在线视频| 中文字幕亚洲欧美一区二区三区| 亚洲欧美日韩图片| 亚洲一区二区中文字幕| 国内精品小视频| 国产日产亚洲精品| 欧美一级片久久久久久久| 欧美成人激情在线| 欧美激情在线一区| 欧美亚洲国产精品| 日韩中文字幕在线视频| 久久成人这里只有精品| www.久久久久| 久久久精品中文字幕| 在线国产精品视频| 欧美午夜精品在线| 国产精品444| 国产精品香蕉国产| 91欧美日韩一区| 久久久久久国产免费| 亚洲男女性事视频| 久久久久久亚洲精品不卡| 亚洲欧美中文日韩v在线观看| 国产精品免费一区二区三区都可以| 色综合五月天导航| 久色乳综合思思在线视频| 午夜精品www| 欧洲成人在线视频| 亚洲国产日韩欧美在线动漫| 日韩av中文字幕在线免费观看|