国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

C++異常機(jī)制概述

共 1388字,需瀏覽 3分鐘

 ·

2020-11-19 14:32

(給C語(yǔ)言與CPP編程加星標(biāo),提升C/C++技能)
作者:melonstreet ?整理:cpp開(kāi)發(fā)者
出處:https://www.cnblogs.com/QG-whz/
【導(dǎo)讀】:我們?cè)趯?duì) vector 做 push 操作的時(shí)候,或者對(duì)某個(gè)指針做 new 操作的時(shí)候,如果沒(méi)有做異常處理,一旦系統(tǒng)內(nèi)存不夠用了,程序是會(huì)被 terminate 掉的。這就要求我們熟悉 C++ 異常,保證日常開(kāi)發(fā)中能正確處理它。本文主要介紹C++ 異常機(jī)制的底層原理與實(shí)際應(yīng)用,通俗易懂,快來(lái)讀一讀吧。


以下是正文

C++異常機(jī)制概述

異常處理是C++的一項(xiàng)語(yǔ)言機(jī)制,用于在程序中處理異常事件。異常事件在 C++ 中表示為異常對(duì)象
異常事件發(fā)生時(shí),程序使用throw關(guān)鍵字拋出異常表達(dá)式,拋出點(diǎn)稱(chēng)為異常出現(xiàn)點(diǎn),由操作系統(tǒng)為程序設(shè)置當(dāng)前異常對(duì)象,然后執(zhí)行程序的當(dāng)前異常處理代碼塊,在包含了異常出現(xiàn)點(diǎn)的最內(nèi)層的?try?塊,依次匹配catch語(yǔ)句中的異常對(duì)象(只進(jìn)行類(lèi)型匹配,catch參數(shù)有時(shí)在 catch 語(yǔ)句中并不會(huì)使用到)。若匹配成功,則執(zhí)行 catch 塊內(nèi)的異常處理語(yǔ)句,然后接著執(zhí)行?try...catch...?塊之后的代碼。如果在當(dāng)前的 try...catch... 塊內(nèi)找不到匹配該異常對(duì)象的catch語(yǔ)句,則由更外層的 try...catch... 塊來(lái)處理該異常;如果當(dāng)前函數(shù)內(nèi)所有的 try...catch... 塊都不能匹配該異常,則遞歸回退到調(diào)用棧的上一層去處理該異常。如果一直退到主函數(shù) main() 都不能處理該異常,則調(diào)用系統(tǒng)函數(shù) terminate() 終止程序。

一個(gè)最簡(jiǎn)單的 try...catch... 的例子如下所示。我們有個(gè)程序用來(lái)記班級(jí)學(xué)生考試成績(jī),考試成績(jī)分?jǐn)?shù)的范圍在 0-100 之間,不在此范圍內(nèi)視為數(shù)據(jù)異常:
int main(){    int score=0;    while (cin >> score)    {        try        {            if (score > 100 || score < 0)            {                throw score;            }            //將分?jǐn)?shù)寫(xiě)入文件或進(jìn)行其他操作        }        catch (int score)        {            cerr << "你輸入的分?jǐn)?shù)數(shù)值有問(wèn)題,請(qǐng)重新輸入!";            continue;        }    }}
throw 關(guān)鍵字
在上面這個(gè)示例中,throw?是個(gè)關(guān)鍵字,與拋出表達(dá)式構(gòu)成了 throw 語(yǔ)句。其語(yǔ)法為:
throw 表達(dá)式;
throw 語(yǔ)句必須包含在 try 塊中,也可以是被包含在調(diào)用棧的外層函數(shù)的 try 塊中,如:
//示例代碼:throw包含在外層函數(shù)的try塊中void registerScore(int score){    if (score > 100 || score < 0)        throw score; //throw語(yǔ)句被包含在外層main的try語(yǔ)句塊中    //將分?jǐn)?shù)寫(xiě)入文件或進(jìn)行其他操作}int main(){    int score=0;    while (cin >> score)    {        try        {            registerScore(score);        }        catch (int score)        {            cerr << "你輸入的分?jǐn)?shù)數(shù)值有問(wèn)題,請(qǐng)重新輸入!";            continue;        }    }}
執(zhí)行 throw 語(yǔ)句時(shí),throw 表達(dá)式將作為對(duì)象被復(fù)制構(gòu)造為一個(gè)新的對(duì)象,稱(chēng)為異常對(duì)象。異常對(duì)象放在內(nèi)存的特殊位置,該位置既不是棧也不是堆,在 window 上是放在線程信息塊 TIB 中。這個(gè)構(gòu)造出來(lái)的新對(duì)象與本級(jí)的 try 所對(duì)應(yīng)的 catch 語(yǔ)句進(jìn)行類(lèi)型匹配,類(lèi)型匹配的原則在下面介紹。

在本例中,依據(jù) score 構(gòu)造出來(lái)的對(duì)象類(lèi)型為 int,與 catch(int score) 匹配上,程序控制權(quán)轉(zhuǎn)交到 catch 的語(yǔ)句塊,進(jìn)行異常處理代碼的執(zhí)行。如果在本函數(shù)內(nèi)與 catch 語(yǔ)句的類(lèi)型匹配不成功,則在調(diào)用棧的外層函數(shù)繼續(xù)匹配,如此遞歸執(zhí)行直到匹配上 catch 語(yǔ)句,或者直到 main 函數(shù)都沒(méi)匹配上而調(diào)用系統(tǒng)函數(shù) terminate() 終止程序。
當(dāng)執(zhí)行一個(gè) throw 語(yǔ)句時(shí),跟在 throw 語(yǔ)句之后的語(yǔ)句將不再被執(zhí)行,throw 語(yǔ)句的語(yǔ)法有點(diǎn)類(lèi)似于 return,因此導(dǎo)致在調(diào)用棧上的函數(shù)可能提早退出。

異常對(duì)象

異常對(duì)象是一種特殊的對(duì)象,編譯器依據(jù)異常拋出表達(dá)式復(fù)制構(gòu)造異常對(duì)象,這要求拋出異常表達(dá)式不能是一個(gè)不完全類(lèi)型(一個(gè)類(lèi)型在聲明之后定義之前為一個(gè)不完全類(lèi)型。不完全類(lèi)型意味著該類(lèi)型沒(méi)有完整的數(shù)據(jù)與操作描述),而且可以進(jìn)行復(fù)制構(gòu)造,這就要求異常拋出表達(dá)式的復(fù)制構(gòu)造函數(shù)(或移動(dòng)構(gòu)造函數(shù))、析構(gòu)函數(shù)不能是私有的。
異常對(duì)象不同于函數(shù)的局部對(duì)象,局部對(duì)象在函數(shù)調(diào)用結(jié)束后就被自動(dòng)銷(xiāo)毀,而異常對(duì)象將駐留在所有可能被激活的 catch 語(yǔ)句都能訪問(wèn)到的內(nèi)存空間中,也即上文所說(shuō)的 TIB。當(dāng)異常對(duì)象與 catch 語(yǔ)句成功匹配上后,在該 catch 語(yǔ)句的結(jié)束處被自動(dòng)析構(gòu)。
在函數(shù)中返回局部變量的引用或指針幾乎肯定會(huì)造成錯(cuò)誤,同樣的道理,在 throw 語(yǔ)句中拋出局部變量的指針或引用也幾乎是錯(cuò)誤的行為。如果指針?biāo)赶虻淖兞吭趫?zhí)行 catch 語(yǔ)句時(shí)已經(jīng)被銷(xiāo)毀,對(duì)指針進(jìn)行解引用將發(fā)生意想不到的后果。
throw 出一個(gè)表達(dá)式時(shí),該表達(dá)式的靜態(tài)編譯類(lèi)型將決定異常對(duì)象的類(lèi)型。所以當(dāng) throw 出的是基類(lèi)指針的解引用,而該指針?biāo)赶虻膶?shí)際對(duì)象是派生類(lèi)對(duì)象,此時(shí)將發(fā)生派生類(lèi)對(duì)象切割。
除了拋出用戶(hù)自定義的類(lèi)型外,C++ 標(biāo)準(zhǔn)庫(kù)定義了一組類(lèi),用戶(hù)報(bào)告標(biāo)準(zhǔn)庫(kù)函數(shù)遇到的問(wèn)題。這些標(biāo)準(zhǔn)庫(kù)異常類(lèi)只定義了幾種運(yùn)算,包括創(chuàng)建或拷貝異常類(lèi)型對(duì)象,以及為異常類(lèi)型的對(duì)象賦值。
標(biāo)準(zhǔn)異常類(lèi)描述頭文件
exception最通用的異常類(lèi),只報(bào)告異常的發(fā)生而不提供任何額外的信息exception
runtime_error只有在運(yùn)行時(shí)才能檢測(cè)出的錯(cuò)誤stdexcept
rang_error運(yùn)行時(shí)錯(cuò)誤:產(chǎn)生了超出有意義值域范圍的結(jié)果stdexcept
overflow_error運(yùn)行時(shí)錯(cuò)誤:計(jì)算上溢stdexcept
underflow_error運(yùn)行時(shí)錯(cuò)誤:計(jì)算下溢stdexcept
logic_error程序邏輯錯(cuò)誤stdexcept
domain_error邏輯錯(cuò)誤:參數(shù)對(duì)應(yīng)的結(jié)果值不存在stdexcept
invalid_argument邏輯錯(cuò)誤:無(wú)效參數(shù)stdexcept
length_error邏輯錯(cuò)誤:試圖創(chuàng)建一個(gè)超出該類(lèi)型最大長(zhǎng)度的對(duì)象stdexcept
out_of_range邏輯錯(cuò)誤:使用一個(gè)超出有效范圍的值stdexcept
bad_alloc內(nèi)存動(dòng)態(tài)分配錯(cuò)誤new
bad_castdynamic_cast類(lèi)型轉(zhuǎn)換出錯(cuò)type_info

catch 關(guān)鍵字

catch語(yǔ)句匹配被拋出的異常對(duì)象。如果 catch 語(yǔ)句的參數(shù)是引用類(lèi)型,則該參數(shù)可直接作用于異常對(duì)象,即參數(shù)的改變也會(huì)改變異常對(duì)象,而且在 catch 中重新拋出異常時(shí)會(huì)繼續(xù)傳遞這種改變。如果 catch 參數(shù)是傳值的,則復(fù)制構(gòu)函數(shù)將依據(jù)異常對(duì)象來(lái)構(gòu)造catch 參數(shù)對(duì)象。在該 catch 語(yǔ)句結(jié)束的時(shí)候,先析構(gòu) catch 參數(shù)對(duì)象,然后再析構(gòu)異常對(duì)象。
在進(jìn)行異常對(duì)象的匹配時(shí),編譯器不會(huì)做任何的隱式類(lèi)型轉(zhuǎn)換或類(lèi)型提升。除了以下幾種情況外,異常對(duì)象的類(lèi)型必須與 catch 語(yǔ)句的聲明類(lèi)型完全匹配:
  1. 允許從非常量到常量的類(lèi)型轉(zhuǎn)換。

  2. 允許派生類(lèi)到基類(lèi)的類(lèi)型轉(zhuǎn)換。

  3. 數(shù)組被轉(zhuǎn)換成指向數(shù)組(元素)類(lèi)型的指針。

  4. 函數(shù)被轉(zhuǎn)換成指向函數(shù)類(lèi)型的指針。

尋找 catch 語(yǔ)句的過(guò)程中,匹配上的未必是類(lèi)型完全匹配那項(xiàng),而在是最靠前的第一個(gè)匹配上的 catch 語(yǔ)句(我稱(chēng)它為最先匹配原則)。所以,派生類(lèi)的處理代碼 catch 語(yǔ)句應(yīng)該放在基類(lèi)的處理 catch 語(yǔ)句之前,否則先匹配上的總是參數(shù)類(lèi)型為基類(lèi)的 catch 語(yǔ)句,而能夠精確匹配的 catch 語(yǔ)句卻不能夠被匹配上。
在 catch 塊中,如果在當(dāng)前函數(shù)內(nèi)無(wú)法解決異常,可以繼續(xù)向外層拋出異常,讓外層catch 異常處理塊接著處理。此時(shí)可以使用不帶表達(dá)式的 throw 語(yǔ)句將捕獲的異常重新拋出:
catch(type x){    //做了一部分處理    throw;}
被重新拋出的異常對(duì)象為保存在 TIB 中的那個(gè)異常對(duì)象,與 catch 的參數(shù)對(duì)象沒(méi)有關(guān)系,若 catch 參數(shù)對(duì)象是引用類(lèi)型,可能在 catch 語(yǔ)句內(nèi)已經(jīng)對(duì)異常對(duì)象進(jìn)行了修改,那么重新拋出的是修改后的異常對(duì)象;若catch參數(shù)對(duì)象是非引用類(lèi)型,則重新拋出的異常對(duì)象并沒(méi)有受到修改。
使用 catch(...){} 可以捕獲所有類(lèi)型的異常,根據(jù)最先匹配原則,catch(...){} 應(yīng)該放在所有 catch 語(yǔ)句的最后面,否則無(wú)法讓其他可以精確匹配的 catch 語(yǔ)句得到匹配。通常在catch(...){} 語(yǔ)句中執(zhí)行當(dāng)前可以做的處理,然后再重新拋出異常。注意,catch 中重新拋出的異常只能被外層的 catch 語(yǔ)句捕獲。

棧展開(kāi)、RAII

其實(shí)棧展開(kāi)已經(jīng)在前面說(shuō)過(guò),就是從異常拋出點(diǎn)一路向外層函數(shù)尋找匹配的 catch 語(yǔ)句的過(guò)程,尋找結(jié)束于某個(gè)匹配的 catch 語(yǔ)句或標(biāo)準(zhǔn)庫(kù)函數(shù) terminate。這里重點(diǎn)要說(shuō)的是棧展開(kāi)過(guò)程中對(duì)局部變量的銷(xiāo)毀問(wèn)題。我們知道,在函數(shù)調(diào)用結(jié)束時(shí),函數(shù)的局部變量會(huì)被系統(tǒng)自動(dòng)銷(xiāo)毀,類(lèi)似的,throw 可能會(huì)導(dǎo)致調(diào)用鏈上的語(yǔ)句塊提前退出,此時(shí),語(yǔ)句塊中的局部變量將按照構(gòu)成生成順序的逆序,依次調(diào)用析構(gòu)函數(shù)進(jìn)行對(duì)象的銷(xiāo)毀。例如下面這個(gè)例子:
//一個(gè)沒(méi)有任何意義的類(lèi)class A{public:    A() :a(0){ cout << "A默認(rèn)構(gòu)造函數(shù)" << endl; }    A(const  A& rsh){ cout << "A復(fù)制構(gòu)造函數(shù)" << endl; }    ~A(){ cout << "A析構(gòu)函數(shù)" << endl; }private:    int  a;};int main(){        try        {            A a ;            throw a;        }        catch (A a)        {            ;        }    return 0;}


程序?qū)⑤敵觯?/p>

定義變量 a 時(shí)調(diào)用了默認(rèn)構(gòu)造函數(shù),使用 a 初始化異常變量時(shí)調(diào)用了復(fù)制構(gòu)造函數(shù),使用異常變量復(fù)制構(gòu)造 catch 參數(shù)對(duì)象時(shí)同樣調(diào)用了復(fù)制構(gòu)造函數(shù)。三個(gè)構(gòu)造對(duì)應(yīng)三個(gè)析構(gòu),也即 try 語(yǔ)句塊中局部變量 a 自動(dòng)被析構(gòu)了。然而,如果 a 是在自由存儲(chǔ)區(qū)上分配的內(nèi)存時(shí):
int main(){    try    {        A * a= new A;        throw *a;    }    catch (A a)    {        ;    }    getchar();    return 0;}

程序運(yùn)行結(jié)果:

同樣的三次構(gòu)造,卻只調(diào)用了兩次的析構(gòu)函數(shù)!說(shuō)明 a 的內(nèi)存在發(fā)生異常時(shí)并沒(méi)有被釋放掉,發(fā)生了內(nèi)存泄漏。

RAII機(jī)制有助于解決這個(gè)問(wèn)題,RAII(Resource acquisition is initialization,資源獲取即初始化)。它的思想是以對(duì)象管理資源。為了更為方便、魯棒地釋放已獲取的資源,避免資源死鎖,一個(gè)辦法是把資源數(shù)據(jù)用對(duì)象封裝起來(lái)。程序發(fā)生異常,執(zhí)行棧展開(kāi)時(shí),封裝了資源的對(duì)象會(huì)被自動(dòng)調(diào)用其析構(gòu)函數(shù)以釋放資源。C++ 中的智能指針便符合RAII。關(guān)于這個(gè)問(wèn)題詳細(xì)可以看《Effective C++》條款13.
異常機(jī)制與構(gòu)造函數(shù)
異常機(jī)制的一個(gè)合理的使用是在構(gòu)造函數(shù)中。構(gòu)造函數(shù)沒(méi)有返回值,所以應(yīng)該使用異常機(jī)制來(lái)報(bào)告發(fā)生的問(wèn)題。更重要的是,構(gòu)造函數(shù)拋出異常表明構(gòu)造函數(shù)還沒(méi)有執(zhí)行完,其對(duì)應(yīng)的析構(gòu)函數(shù)不會(huì)自動(dòng)被調(diào)用,因此析構(gòu)函數(shù)應(yīng)該先析構(gòu)所有所有已初始化的基對(duì)象,成員對(duì)象,再拋出異常。

C++ 類(lèi)構(gòu)造函數(shù)初始化列表的異常機(jī)制,稱(chēng)為 function-try block。一般形式為:
myClass::myClass(type1 pa1)    try:  _myClass_val (初始化值){  /*構(gòu)造函數(shù)的函數(shù)體 */}  catch ( exception& err ){  /* 構(gòu)造函數(shù)的異常處理部分 */};


異常機(jī)制與析構(gòu)函數(shù)
C++ 不禁止析構(gòu)函數(shù)向外界拋出異常,但析構(gòu)函數(shù)被期望不向外界函數(shù)拋出異常。析構(gòu)函數(shù)中向函數(shù)外拋出異常,將直接調(diào)用 terminator() 系統(tǒng)函數(shù)終止程序。如果一個(gè)析構(gòu)函數(shù)內(nèi)部拋出了異常,就應(yīng)該在析構(gòu)函數(shù)的內(nèi)部捕獲并處理該異常,不能讓異常被拋出析構(gòu)函數(shù)之外??梢匀绱颂幚恚?/span>
  1. 若析構(gòu)函數(shù)拋出異常,調(diào)用 std::abort() 來(lái)終止程序。

  2. 在析構(gòu)函數(shù)中 catch 捕獲異常并作處理。

關(guān)于具體細(xì)節(jié),有興趣可以看《Effective C++》條款08:別讓異常逃離析構(gòu)函數(shù)。

noexcept修飾符與noexcept操作符

noexcept 修飾符是 C++11 新提供的異常說(shuō)明符,用于聲明一個(gè)函數(shù)不會(huì)拋出異常。編譯器能夠針對(duì)不拋出異常的函數(shù)進(jìn)行優(yōu)化,另一個(gè)顯而易見(jiàn)的好處是你明確了某個(gè)函數(shù)不會(huì)拋出異常,別人調(diào)用你的函數(shù)時(shí)就知道不用針對(duì)這個(gè)函數(shù)進(jìn)行異常捕獲。在 C++98中關(guān)于異常處理的程序中你可能會(huì)看到這樣的代碼:
void func() throw(int ,double ) {...}void func() throw(){...}

這是 throw 作為函數(shù)異常說(shuō)明,前者表示 func()這個(gè)函數(shù)可能會(huì)拋出 int 或 double 類(lèi)型的異常,后者表示 func() 函數(shù)不會(huì)拋出異常。事實(shí)上前者很少被使用,在 C++11 這種做法已經(jīng)被摒棄,而后者則被 C++11 的 noexcept 異常聲明所代替:

void func() noexcept {...}//等價(jià)于void func() throw(){...}
在 C++11 中,編譯器并不會(huì)在編譯期檢查函數(shù)的 noexcept 聲明,因此,被聲明為noexcept 的函數(shù)若攜帶異常拋出語(yǔ)句還是可以通過(guò)編譯的。在函數(shù)運(yùn)行時(shí)若拋出了異常,編譯器可以選擇直接調(diào)用 terminate() 函數(shù)來(lái)終結(jié)程序的運(yùn)行,因此,noexcept 的一個(gè)作用是阻止異常的傳播,提高安全性.
上面一點(diǎn)提到了,我們不能讓異常逃出析構(gòu)函數(shù),因?yàn)槟菍?dǎo)致程序的不明確行為或直接終止程序。實(shí)際上出于安全的考慮,C++11 標(biāo)準(zhǔn)中讓類(lèi)的析構(gòu)函數(shù)默認(rèn)也是 noexcept 的。同樣是為了安全性的考慮,經(jīng)常被析構(gòu)函數(shù)用于釋放資源的 delete 函數(shù),C++11 也默認(rèn)將其設(shè)置為 noexcept。
noexcept也可以接受一個(gè)常量表達(dá)式作為參數(shù),例如:
void func() noexcept(常量表達(dá)式);
常量表達(dá)式的結(jié)果會(huì)被轉(zhuǎn)換成 bool 類(lèi)型,noexcept(bool) 表示函數(shù)不會(huì)拋出異常,noexcept(false) 則表示函數(shù)有可能會(huì)拋出異常。故若你想更改析構(gòu)函數(shù)默認(rèn)的 noexcept聲明,可以顯式地加上 noexcept(false) 聲明,但這并不會(huì)帶給你什么好處。

異常處理的性能分析
異常處理機(jī)制的主要環(huán)節(jié)是運(yùn)行期類(lèi)型檢查。當(dāng)拋出一個(gè)異常時(shí),必須確定異常是不是從 try 塊中拋出。異常處理機(jī)制為了完善異常和它的處理器之間的匹配,需要存儲(chǔ)每個(gè)異常對(duì)象的類(lèi)型信息以及 catch 語(yǔ)句的額外信息。由于異常對(duì)象可以是任何類(lèi)型(如用戶(hù)自定義類(lèi)型),并且也可以是多態(tài)的,獲取其動(dòng)態(tài)類(lèi)型必須要使用運(yùn)行時(shí)類(lèi)型檢查(RTTI),此外還需要運(yùn)行期代碼信息和關(guān)于每個(gè)函數(shù)的結(jié)構(gòu)。
當(dāng)異常拋出點(diǎn)所在函數(shù)無(wú)法解決異常時(shí),異常對(duì)象沿著調(diào)用鏈被傳遞出去,程序的控制權(quán)也發(fā)生了轉(zhuǎn)移。轉(zhuǎn)移的過(guò)程中為了將異常對(duì)象的信息攜帶到程序執(zhí)行處(如對(duì)異常對(duì)象的復(fù)制構(gòu)造或者 catch 參數(shù)的析構(gòu)),在時(shí)間和空間上都要付出一定的代價(jià),本身也有不安全性,特別是異常對(duì)象是個(gè)復(fù)雜的類(lèi)的時(shí)候。
異常處理技術(shù)在不同平臺(tái)以及編譯器下的實(shí)現(xiàn)方式都不同,但都會(huì)給程序增加額外的負(fù)擔(dān),當(dāng)異常處理被關(guān)閉時(shí),額外的數(shù)據(jù)結(jié)構(gòu)、查找表、一些附加的代碼都不會(huì)被生成,正是因?yàn)槿绱耍瑢?duì)于明確不拋出異常的函數(shù),我們需要使用 noexcept 進(jìn)行聲明。

關(guān)于C++異常機(jī)制,歡迎在評(píng)論中和我探討。覺(jué)得文章不錯(cuò),請(qǐng)點(diǎn)贊和在看支持我繼續(xù)分享好文。謝謝!

瀏覽 40
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 亚洲淫秽视频| 污视频网站免费在线观看| 91成人A片| 无码a区天堂| 国产视频第一页| 狠狠干中文字幕| 亚洲精品一二三区| 欧美成人性爱网| 91豆花视频18| 国产亚洲午夜久久久成人电影| 免费人成年激情视频在线观看| 亚洲色图欧美在线| 无码潮喷| 午夜福利资源| 亚洲黄片视频| 激情欧美| 国产三级高清无码| 亚洲操操操操| 久久九九热| 欧美在线大香蕉| 美女黄色片| 亚洲综合电影| 安徽妇搡BBBB搡BBBB,另类老妇| 日韩毛片在线视频x| 大伊香蕉视频| 在线免费看A片| 北条麻妃无码观看| 无码乱伦AV| 国产最新AV| 亚洲A∨无码无在线观看| 男人的天堂免费视频| 免费成人大片| 国产婷婷久久Av免费高清| 欧美色图视频在线观看| 豆花在线视频| 美女啪啪视频| AV中文在线| 強暴人妻一区二区三区| 九九成人免费视频| 亚洲日逼网| 伊人大香蕉电影| 俺去俺来也www色视频| 欧美久草蜜桃视频| 黄色高清视频在线观看| 超碰97老师| 亚洲成人精品在线观看| 另类老妇性bbwbbwbbw| 红桃91人妻爽人妻爽| 亚洲无码字幕| 色婷婷基地| 香蕉漫画在线观看18| 日本中文字幕在线观看视频| 日一日射一射| 日本A视频| 91av一区二区| 中文字幕丰满熟妇人妻| 国产成人AV在线| www.啪| 激情伊人五月天| 安徽妇女BBBWBBBwm| 五月天激情综合| 色天堂在线观看视频| 无码色色| 国产三级片视频在线观看| 国产日韩一区二区| 亚洲秘无码一区二区三区欧美| 欧美老司机| 色综合国产| 国产AV天堂| 91AV在线观看视频| 久久久久久无码| 99热在线免费观看| 青娱乐国产av| 免费三级网站| 久久久久久99| 青青草成人网站| 日韩无码成人| 100国产精品人妻无码| 人成在线免费视频| 日韩无码一卡二卡| 最新日韩无码| 国产AAA片| 欧美毛片在线观看| 欧美日韩免费| 久久免费播放视频| 日本黄色视频在线| 少妇人妻在线| 亚洲AV无码| 色老板免费精品无码免费视频| 亚洲乱码一区二区三区| 亚洲精品福利| 92自拍| 五月天综合| 日本三级片在线| 欧美一级a视频免费放| 乌克兰毛片| 亚洲狼人久久久精品| 日韩欧美手机在线| 日日干视频| 免费黄网站在线观看| 日韩精品123| 亚洲视频在线观看中文字幕 | 亚州操B| 一本色道久久综合| 一区二区免费视频| 欧美在线大香蕉| 天堂麻豆天美| 高清无码视频18| 蜜桃黄片AV在线观看| 另类老妇奶性BBWBBwBBw| 激情六月婷婷| 国产婬片一级A片AAA毛片AⅤ| 欧美群交在线观看| 亚洲日韩中文无码| 日韩熟女视频| 久操精品视频| 国产性爱网址| 野花Av| 日韩三级在线观看| 日本三级片无码| 亚洲va中文字幕| 青青草免费福利视频| 亚洲怡春院| 在线观看免费欧美操逼视频| 欧美一级在线视频| 国产一级A片免费看| 激情丁香五月天| 国产精品2| 亚洲精品久久久久久久久久久 | 黑人粗大无码| 无码A区| 玖玖综合网| 大香蕉综合| 亚州免费视频| 狠狠AV| 日本熟妇高潮BBwBBwBBw| 天天躁狠狠躁av| 成人黄色免费观看| 人妻日日| 亚洲午夜成人| 操逼999| 欧美手机在线| 粉嫩av懂色av蜜臀av熟妇| 美女做爱在线观看| 水蜜桃视频免费观看| 8x8拨牐拨牐拨牐永久免费| 三级麻豆| 国产又爽又黄网站免费观看| 欧美自拍偷拍| 精品99999| 懂色一区二区三区免费| 韩国无码一区二区三区| 青草久久网| 人人射| 国产精品无码ThePorn| 久久三级片电影| 夜夜狠狠擅视频| 黄色香蕉视频| 男人av网站| 俺去俺来也WWW色老板| 人人人操人人| 婷婷五月在线视频| 十八禁视频在线观看网站.www | 国精品无码人妻一区二区三区 | 亚洲天堂av在线观看| 天天插天天狠天天透| 亚洲天堂网2025| 操欧美老女人| 免费尻屄视频| 亚洲AV无码一区二区三区少妇| 爱逼AV| 免费黄色片子| 久久精品综合| 中文字幕亚洲在线观看| 久热精品在线观看视频| 国产精品一区二区黑人巨大| 国产无码高清| 色婷婷激情| 亚洲无码三级视频| 亚洲精品久久久久久| 国产精品视频网站| 人人摸人人看人人| 黄色在线欣赏| 99热91| 黃色一級片黃色一級片尖叫声-百度-百 | 亚洲精品18禁| 亚洲wwwwww| 婷婷国产亚洲精品网站| 亚洲国产欧美日韩在线| 欧美一级片免费看| 国产精品无码一区二区在线欢| av在线免费观看网站| 国产精品白浆| 婷婷色图| 亚洲综合社区| 久久夜色精品| 免费Av网站| 一区二区三区国产精品| 天天视频色版免费观看视频| 91探花在线观看| 日韩黄色一级| 五月天色色图| 成人一区在线观看| 亚洲天堂网2025| 免费在线观看黄色视频| 91人人在线| 亚洲精品国产精品国自产| 天天干天天在线观看| 中文字幕日韩人妻| 黄色一级片网站| 无码av一区二区| 日韩三级片在线播放| 思思在线视频| 国产精品操逼| 免费污视频在线观看| 国产免费自拍视频| 亚洲日本三级片| 一区二区AV| 国产一级免费| 91精品视频在线播放| 人成在线免费视频| 特级西西人体444WWw高清大胆| 日韩欧美大片在线观看| 69式荫蒂被添全过程频| 91九色麻豆| 9l视频自拍蝌蚪9l成人| 91成人免费视频| 黄色片免费在线观看| 中文字幕+乱码+中文乱码电影| 狠狠热视频| 色情综合| 先锋影音成人资源| 91人人妻人人澡人人爽| 做爱的网站| 亚洲成人AAAAA| 婷婷综合视频| 国产乱色精品成人免费视频| 青青草逼视频| 伊人大香在线| 91九色TS另类国产人妖| 日韩h视频| 国产成人精品二三区麻豆| 俺来也俺就去www色情网| 三级黄片免费看| 国产一区二区三区在线观看免费视频免费视频免费视频 | 色九月婷婷| 91无码人妻| 西西4444WWW大胆无视频| 成人网站在线| 99久久久国产精品免费蜜臀| 插插插综合| 91丨人妻丨偷拍| 不卡无码免费视频| 91蝌蚪网| 夜夜撸天天日| 操少妇视频| 北条麻妃无码播放| 人人妻人人爽人人澡人人精品| 三级片大香蕉| www.伊人| 中文字幕h| 水果派成人播放无码| 波多野结衣高清视频| 九九热九九| 99er在线观看| 婷婷五月亚洲| 伊人精品大香蕉| 婷婷国产成人精品| 欧美性交一区二区| 操操操操| 94久久| 亚洲无码视频免费在线观看| 桃色av| 热re99久久精品国产99热| 黄色不卡| 99操逼| 无码国产+白浆| 欧美精品成人| 100国产精品人妻无码| 91丨九色丨老熟女探花| 安徽妇搡BBBB搡BBBB| 丁香六月婷婷综合| 尤物视频在线播放| 亚洲一线在线观看| 动漫3D成人H无码国漫| 亚洲精品在线观看视频| 国产91在线看| 天天干天天操天天射| 亚洲小电影在线观看| 91叉叉叉| 肏逼在线观看| 超碰最新在线观看| 一本大道东京热AV| 久久久国产91桃色一区二区三区| 久久久久人妻| 又a又黄高清无码视频| 影音先锋无码一区| 18禁网站免费| 亚洲日韩AV电影| 日本黄色大片| 亚洲第一色| 色婷婷激情| 久色视频福利| 国产精品一区一区三区| 成年人视频免费看| 污污污www精品国产网站| 婷婷五月天激情丁香| 国产精品一品二区三区的使用体验| www.黄色在线| 欧美理论片在线观看| 韩国一级AV| 国产视频导航| 无码黄页| 日韩综合在线| 亚洲国产成人精品女人久久| AV无码免费| 欧美亚洲| 午夜精品在线观看| 亚洲天堂日本| 精品久久国产| 91人妻无码视频| 亚洲男人的天堂视频网在线观看+720P | 成人免费区一区二区三区| 张柏芝BBw搡BBBB槡BBBBHDfree| 中文字幕无码一区二区三区一本久| 国产一区二区不卡亚洲涩情| 国产黄色视频在线免费看| 黄片无码| 免费日韩一级| 小處女末发育嫩苞AV| 成人性爱自拍| 午夜成人鲁丝片午夜精品| 在线观看污视频| 国产人妻精品一二三区| 一区二区精品视频| 牛牛Av| 亚洲精选一区二区三区| 99热这里只有精品9| 操逼逼网| 黄色a片在线观看| 久久超碰精品| 国产三级网站| 蜜臀久久精品久久久久| 亚洲免费网| 日韩av在线不卡| 国产亚洲激情| 综合精品7799| 免费看一级高潮毛片| 成人AV毛片| 草榴在线视频| 亚洲AV永久无码成人| 成人在线小视频| 欧美日韩免费在线视频| 成人黄网免费观看视频| 精品无码在线观看视频| 日韩精品综合| 亚洲va欧美va天堂v国产综合| 青青草乱伦视频| av色在线| 亚洲91在线| 亚洲人成小说| 伊人三级片| 国产成人亚洲综合AV婷婷| 国产免费麻豆| 日韩不卡中文字幕| 日韩福利在线观看| 毛片大香蕉| 影音先锋男人资源站| 欧美三区四区| 操逼网站在线观看| 亚洲精品成人AV| 日日夜夜天天操| 国产又爽又黄免费网站校园里 | 午夜熟睡乱子伦视频| 亚洲日韩在线视频播放| 中文资源在线a中文| 毛片国产| 国产1区2区3区中文字幕| 三级视频在线观看| 伊人网av| 黄色色情小说| 安徽妇搡BBB搡BBBB户外老太太| 黄色国产在线| 亚洲一区无码| 无码AV在线观看| 国产精品婷婷久久久| 日韩黄色视频| 成人午夜婬片A片| 国产性爱网| 操比视频在线观看| 日韩成人高清无码| 欧美日韩免费观看视频| 成人黄片网站| 中文字幕免费MV第一季歌词| 日日摸日日添日日躁AV| 高清色色女网站| 一道本无码在线视频| 蜜桃BBwBBWBBwBBw| 日韩av在线不卡| 中文字幕免费MV第一季歌词| 精品乱码一区| 国产黄片免费视频| 午夜aaa| 久艹在线视频| 男女啪啪动态图| 中文人妻第9页| 亚洲一区自拍| 一级一A片一a免费看| 成人视频18| 中文字幕AV在线免费观看| 国产二区三区| 亚洲欧美日韩无码| 五月婷中文字幕| 四川少妇搡BBBB搡BBB视频网 | 91麻豆影院| 久久无码影院| 性天堂| 一区二区久久| 亚洲成人一二三区| 囯产精品久久久久久久久免费无码 | 青青草手机在线视频| 成人精品亚洲人成在线| 免费看成人片| 亚洲国产97| 人人干天天干| 久久久久99精品成人网站| 国产免费一区二区三区| 一区视频免费观看| 国产操屄视频| 国产伊人网| 国产激情视频在线观看| 欧美久久一区| 无码一区二区免费| 国产视频123区| 国产成人精品无码免费| 97视频网站| 日韩一区二区无码| 欧美精品三区| 无码乱伦视频| 丁香六月婷| 日批免费网站| 91大神在线免费观看| 大鸡吧在线视频| 日韩欧美国产一区二区| 成人网站免费在线观看| 熟妇操逼视频| 亚洲精品无码电影| 国产一区视频18| 99热网| 亚洲第一狼人综合网| 成人短视频在线观看| 亚洲丁香五月激情| 人人澡人人爽| 亚洲一区二区三区免费视频| 人人操AV| 高清毛片AAAAAAAAA郊外| 亚洲黄片视频| 欧美特级黄| 日韩色情视频| av在线一区二区三区| 国产无码自拍| 一本到免费视频| 亚洲精品成人无码| 99视频这里有精品| 国产一级特黄aaa大片| 97色色超碰| 久草视频新| 黄色小视频在线观看| 中文字幕av网站| 日韩中文字幕久久| 日本中文字幕视频| 天天干天天干天天日| 91人妻人人爽人人澡| 丁香五月天婷婷| 成人网站免费视频| 99亚洲欲妇| 91女人18毛片水多的意思| 特黄视频在线观看| 日韩精品久久| 成年人视频网| 亚洲三级在线观看| 中文解说AⅤ水果派| 人妻无码在线观看| 久久国产成人| 黄色视频免费观看国产| 欧美精产国品一二三产品在哪买 | 亚洲影院第一页在线观看| 激情网五月天| 欧洲美一区二区三区亚洲| 免费中文字幕视频| 国产一级免费| 国产高清久久| 怡红院爽妇网| www.婷婷五月天| 成人午夜黄片| 亲子伦一区二区三区观看方式| 亚洲天堂女| 国产学生妹在线播放| 亚州无码精品| 最近中文字幕在线视频| 爱液视频| 亚洲第一成网站| 日韩在线中文字幕| 北条麻妃无码中文| 蜜桃传媒视频| 中文字幕综合在线| 国产在线观看av| 青在线视频| 欧美日韩免费观看视频| 亚洲高清在线| 亚洲图片欧美另类| 国产91久久婷婷一区二区| 丁香婷婷色五月激情综合三级三级片欧美日韩国| 自拍视频在线观看| 97人人操人人| 无码小黄片| 永久免费一区二区三区| 逼特逼视频在线| 自慰一区二区| 色欧美亚洲| 成人性爱视频在线观看| 亚洲黄色视频在线| 黄色视频在线观看| 国产精品久久久一区二区三区| 天天爽天天爽| 狠狠狠狠狠狠狠狠狠| 成人黄网站免费观看| 狠狠色婷婷| 九九九成人| 在线免费观看a| 亚欧在线视频| 无码人妻一区二区三区线花季传件| 亚洲中文字墓| 黄色A毛片| 蝌蚪窝在线免费观看视频| h片免费在线观看| 亚洲精品无码a片| 国产欧美综合一区二区| 苍井空中文字幕在线观看| 婷婷色导航| 国产精品自拍小视频| 青青草乱伦视频| 久久草视频在线播放| 人人草人人摸| 丰满BBwBBwBBwBBW| 国产三级av在线| 日本熟妇高潮BBwBBwBBw| 欧美久操| 国产一区二区三区四区五区六区七区| 91国产精品| 人人射人人| 免费操| 亚洲第一综合| 俺来也俺去也www色官| 91久久精品国产91久久公交车| 亚洲操逼网| 91偷拍视频| 欧美三级大片| 五月天无码在线| 俺去俺来也www色官网黑人| 人人舔人人草| 欧美三级在线观看视频| 败火老熟女ThePorn视频| 91福利在线观看| 中文字幕第五页| 人妻丰满熟妇av无码区| 性爱av天堂| 91无码一区二区三区| 中文字幕日韩有码| 99热在线观看精品| 长泽梓黑人初解禁BDD07| 99在线视频免费观看| 国产精品18禁| 成人AV中文字幕| 中文字幕在线观看有码| 亚洲国产精品VA在线看黑人| 三级片AAAA| 在线看片国产| 在线观看国产区| 欧美一在线一综合| 狼友视频在在观看| 初学影院WWWBD英语完整版在线观看 | 肉色超薄丝袜脚交一区二区| 精国产品一区二区三区A片| 偷拍视频网站北条麻妃| 久草网站| 色色网站| 亚洲综合网站| 日韩在线观看免费| 在线播放你懂的| 日韩在线视频观看| 中文字幕亚洲在线| 懂色AV| 国产黄网| 超碰人人干| 亚洲成人无码电影| 黄色片在线免费看| 午夜A片| 久草福利在线观看| 国产精品99久久久久的广告情况| 午夜不卡视频| 久久噜噜噜精品国产亚洲综合| 青草无码视频| 成人在线免费网站| 成人激情视频网| 亚洲天堂第一页| 特黄aaaaaaaa真人毛片| 久草免费在线视频| 影音先锋AV啪啪资源| 免费在线看黄网站| 日韩爱爱视频| 国产在线不卡| 国产操b| 爽好紧别夹喷水无码| 国产顶级理伦| 黑人又粗又大XXXXOO| 国外亚洲成AV人片在线观看 | 亚洲日韩中文字幕在线| 国产成人秘免费观看一区二区三区 | 色婷婷大香蕉| 欧美天堂在线| 欧美成人aaa| 艹逼视频免费观看| 日韩人成| 久久天堂AV综合合色蜜桃网| 国产高清A片| 久99久热| 99精品视频免费观看| 99热这里| 欧美熟妇性爱视频| 亚洲AV无码乱码国产| 日韩夜夜操| 国产精品久久久久久久久久久久久 | 国产成人小视频| 中文字幕免费在线观看| 亚洲精品成人av| 一区二区国产视频| 婷婷五月天激情电影| 欧美丁香五月| 国精产品秘成人一区二| 91视频网站在线观看| 亚洲无码影视| 色婷婷中文在线| 青娱乐精品在线| 91人妻网| 爽好紧别夹喷水网站| 久久久婷婷| 少妇搡BBBB搡BBB搡打电话| 草久在线| 五月天国产| 日韩精品电影| 黄片视频在线观看| 欧美一区电影| 中文字幕在线无码视频| 高清无码三级片在线观看| 毛片A片| 影音先锋人妻限定| 亚洲成人无码片| 日韩无码av电影| 欧美丰满人妻| 蜜桃Av噜噜一区二区三区| 亚洲日操| 日本人妻在线观看| 免费看成人片| 欧美操逼逼| 亚洲日韩一区二区三区| 婷婷成人视频| 中国老女人操逼视频| 五月丁香在线观看| 一区二区三区小视频| 亚洲色色色| 超碰97在线免费观看| 日韩一级无码视频| 成人黄网在线观看| 69国产精品视频免费观看| 自拍偷拍中文字幕| 欧美性爱视频免费看| 亚洲日韩国产中文字幕| 久久婷婷六月综合| 久久久久久久久久久久久久久久久久久久| aaa精品视频| 大黄网站在线观看| 久操精品视频| 日本一区二区视频| 久操播放器| 91香蕉视频免费| 深爱五月激情| 日韩精品在线观看视频| 足交在线播放| 北条麻妃被躁57分钟视频在线| 中文字幕的| 91在线观看| 久久人搡人人玩人妻精AV香蕉| 91精品久久久久久久| 99热在线中文字幕| 久久这里精品| 黑人AV在线| 五月婷婷中文版| 亚洲国产精品二二三三区| 操国产美女| 久久婷婷五月综合伊人| 色色在线| 男人的天堂视频在线观看| 人成免费在线视频| 伊人大香蕉在线观看| 中文字幕日韩乱伦| 黄色一级在线观看| 翔田千里与黑人50分钟| 午夜福利100理论片| 国产91无码精品秘入口新欢| 人妖无码| 婷婷狠狠干| 国产A片免费看| 日韩操逼AV| 肉乳无码A片av| 欧美自拍视频| 日韩一本| 中文字幕在线免费观看视频| www.91在线视频| 亚洲日韩影院| 亚洲性爱综合| 欧美日韩一级A片| 在线播放中文字幕| 国内精品久久久久久久久98| 18一20女一片毛片| AV资源网站在线| 亚洲精品人妻在线| 最新中文字幕一区| 国产主播中文字幕| 天天日夜夜爽| 欧美h在线观看| www操逼| 精品三级网站| 超碰人人草| 青青草在线观看免费| 九九热在线精品| 日本国产高清| 色噜噜AV| 国产剧情自拍| 亚洲色综合久久五月| 成人aV免费观看| 在线免费观看无码视频| 在线免费黄片| 一级a一级a免费观看免免黄‘/| 国产成人亚洲综合A∨婷婷| 五月天亚洲无码| 中文字幕视频网站| 五月丁香婷婷开心| 日本一区二区视频| 人妻丝袜蕾丝高跟双飞| 国产乱伦对白| 欧美操女人| 亚洲精品一区二区三区新线路| 亚洲一二期视频| 99国产精品免费视频观看8| 国产777| 九九综合网| 国产免费黄色av| 国产熟睡乱子伦午夜视频_第1集| 加勒比一区二区三区| 91乱子伦国产乱子伦| 自拍偷拍亚洲无码| 漂亮人妻吃鸡啪啪哥哥真的好| 亚洲狼人天堂| 国产区视频| 麻豆av在线| 91人妻人人爽人人澡| 91在线精品秘一区二区黄瓜| 成人小视频在线| 日本三级片在线动| 天天射天天射| 国产女人18毛片水18精品软件| AV女人天堂| 人妻精品免费| 伊人久久爱| 青娱乐国产| 国产精品色8| 日本免费在线黄色视频| 国内久久| 黄色大片免费在线观看| 国产精品国产三级片| 亚洲AV高清| 国产A片大全| 日本超碰| 国内精品一区二区三区| 国产精品爽爽久久久| 色天天综合网| 黑人亚洲娇小videos∞| 国产欧美一区二区人妻喷水| 亚洲无码999| 琪琪色五月天| 小h片在线观看| 一本大道东京热AV| 日韩电影免费在线观看| 一级黄色电影免费看| 操日本女人逼| 欧美国产综合在线| 3344gc在线观看入口| 亚洲欧洲高清无码| 欧美h| 三级片无码在线播放| 不卡a12| 一道本视频在线| 亚洲色五月| 日韩乱伦中文字幕| 婷婷伊人久操网| 欧美日韩视频在线| 91性视频| 丁香社区五月天| 亚洲无码AV免费观看| 亚洲成人一区二区| Chinese搡老女人| eeuss久久| 国产乱码精品一区二区三区的特点| 少妇福利| 在线小黄片| 无码专区亚洲| 西西www444无码大胆| 91拍真实国产伦偷精品| 哪里能看毛片| eeuss久久| 免费观看高清无码视频| 日日夜夜干| 在线中文字幕AV| 一级黄色视频片| 亚洲在线无码播放| 狠狠色婷婷| 国产精品成人99一区无码 | 婷婷五月天激情网| 免费一级无码成人片| 色乱视频| 无码国产+白浆| www.av免费| 日韩一区二区三区四区| jizz在线观看| 日本中文字幕中文翻译歌词| 91国啪| 婷婷五月天激情丁香| 无码激情视频| 亚洲精品中文字幕无码| 国产黄色性爱视频| 国内精品内射| 国产丰满大乳无码免费播放 | 国产精品啪啪啪啪| 国产中文字幕AV| 操逼视频大全| 欧美精品网站| 台湾成人综合网| 免费中文字幕av| 在线亚洲AV| 肏屄视频在线看| 小小拗女BBw搡BBBB搡| 伊人三区| 操噜噜噜噜噜插| 无码人妻一区二区| 亚洲无码视频免费在线观看| 欧美色国| 久久国产乱子伦精品免费午夜...| 欧美熟妇擦BBBB擦BBBB| 成人亚洲性情网站www在线| 婷婷丁香五月激情一区综合网| 四虎精品一区二区三区| 无码人妻丰满熟妇| 免费无码一区| 91小视频在线| 狠狠干综合网| 狠狠2021| 中文字幕一二三四| 怡春院日韩| 亚洲污网| 国产精品国产精品国产| 足浴小少妇-88AX| 精品国产乱码久久久久久郑州公司| 国产亚洲一区二区三区| 欧美国产三级| 亚洲在线成人| 亚洲日韩欧美色图| 国产精品资源在线观看| 黄色成人网站大全| 蜜桃av久久久亚洲精品| www.99免费视频| 国模一区二区三区| 91久久久裸身美女| 另类老妇性bbwbbwbbw| 人人摸人人| 丁香五月天堂网| 久久伊人大香蕉| 大香蕉精品在线| www.欧美日韩| 午夜伊人| 国产成人亚洲日韩| 一区免费视频| 五月激情视频| 中文字幕乱伦| h片在线免费观看| 亚洲色图狠狠撸| 骚小姨子无码| 成人视频91| 999久久久久| 成人无码高清在线观看|