精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

開發(fā) 后端 開發(fā)工具
我認(rèn)為要讀懂STL中allocator部分的源碼,并汲取它的思想,至少以下幾點(diǎn)知識你要了解:operator new和operator delete、handler函數(shù)以及一點(diǎn)模板知識。否則,下面你很可能看不大明白,補(bǔ)充點(diǎn)知識再學(xué)習(xí)STL源碼比較好。

下面會(huì)結(jié)合關(guān)鍵源碼分析C++STL(SGI版本)的內(nèi)存配置器設(shè)計(jì)思想。關(guān)鍵詞既然是“思想”,所以重點(diǎn)也就呼之欲出了。

1、allocator的簡短介紹

我閱讀的源碼是SGI公司的版本,也是看起來最清楚的版本,各種命名最容易讓人看懂。allocator有人叫它空間配置器,因?yàn)榭臻g不一定是內(nèi)存,也可以是磁盤或其他輔助存儲(chǔ)介質(zhì)。我說的內(nèi)存配置就是指的allocator。

C++標(biāo)準(zhǔn)規(guī)范了allocator的一些必要接口,由各個(gè)廠家實(shí)現(xiàn)。SGI的版本與眾不同,也與標(biāo)準(zhǔn)規(guī)范不同,它的名稱是alloc而不是allocator且不接受任何參數(shù)

假設(shè)你在程序中顯示寫出allocator,不能像下面這樣寫:

vector<int, std::allocator<int> > iv;        //錯(cuò)誤的

必須要這樣寫才對:

vector<int, std::alloc> iv                    //好的

雖然SGI STL并不符合規(guī)范,但我們用起來好像很自然。這是因?yàn)槲覀兪褂脮r(shí)空間配置器是缺省的,不需要我們自行指定。例如,STL中vector的聲明如下:

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

注意:下文我基本就用截圖來解釋代碼了,因?yàn)槲野l(fā)現(xiàn)比起粘貼代碼,這樣更清晰(有顏色對比)。

2、源碼文件簡單介紹

STL標(biāo)準(zhǔn)規(guī)定:STL的allocator定義于<Memory>文件中,<Memory>主要包含了一些頭文件,我們主要說的是兩個(gè):

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

<stl_alloc.h>負(fù)責(zé)內(nèi)存空間的配置與釋放;<stl_construct.h>負(fù)責(zé)對象內(nèi)容的構(gòu)造與析構(gòu)

3、構(gòu)造和析構(gòu)工具:construct()和destroy()

先來說一下簡單的<stl_construct.h>文件。這部分也不涉及什么思想,只是有一個(gè)版本的destroy()應(yīng)該認(rèn)真看看。

(1)構(gòu)造工具:construct()

construct()只有一個(gè)版本:

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

這里使用了placement new表達(dá)式(定位new 表達(dá)式),它的作用是p指向的內(nèi)存類型為T1,用value值初始化這塊內(nèi)存。

(2)析構(gòu)工具

destroy()倒是有幾個(gè)版本:

***個(gè)版本:

 

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

這種顯示調(diào)用析構(gòu)函數(shù)的做法,你也應(yīng)該要熟悉。

第二個(gè)版本:

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

第二個(gè)版本可有點(diǎn)說法。調(diào)用層次是這樣的:destroy-> __destroy-> __destroy_aux,__destroy_aux最終調(diào)用***個(gè)版本的destroy。這個(gè)版本的destroy接受一對迭代器作為參數(shù),析構(gòu)迭代器所指向的范圍內(nèi)元素。

講解這個(gè)流程前,先簡單說一下trivial_destructor。

如果用戶不定義析構(gòu)函數(shù),而是用編譯器合成的,則說明析構(gòu)函數(shù)基本沒有什么用(但默認(rèn)會(huì)被調(diào)用),稱之為trivial destructor。

那么,如果一對迭代器所指向的元素都是trivial destructor的,就沒必要浪費(fèi)時(shí)間對每個(gè)對象依次執(zhí)行它的析構(gòu)函數(shù)了,依靠編譯器的行為就好了。這樣在效率上是一種提升。這是STL allocator優(yōu)化的一個(gè)點(diǎn)。

首先利用value_type()取得迭代器指向?qū)ο蟮男蛣e,再利用__type_traits<T>判斷對象的析構(gòu)函數(shù)是否為trivial_destructor。如果是__true_type就什么都不做,否則循環(huán)調(diào)用***版本的destroy()。

第三個(gè)版本:

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

這是針對迭代器為char*和wchar_t*的特化版本,看到它們的函數(shù)體為空,你應(yīng)該猜到了,無須執(zhí)行析構(gòu)操作。

4、內(nèi)存的申請與銷毀,std::alloc

內(nèi)存的申請和銷毀由<stl_alloc.h>負(fù)責(zé)。SGI關(guān)于這一點(diǎn)的設(shè)計(jì)哲學(xué)是:

(1)向system heap要求空間。

(2)考慮多線程狀態(tài)。

(3)考慮內(nèi)存不足時(shí)的應(yīng)變策略。

(4)考慮過多“小型區(qū)塊”可能造成的內(nèi)存碎片問題。

其實(shí)我最主要想說的是(3)(4)的設(shè)計(jì)策略,尤其是內(nèi)存池的思路。

std::alloc的整體設(shè)計(jì)思想為:

SGI設(shè)計(jì)了雙層級配置器,***級配置器直接使用malloc和free;第二級配置器視情況不同采用不同策略:當(dāng)配置區(qū)塊超過128bytes 時(shí),視為“足夠大”,調(diào)用***級配置器處理;當(dāng)配置區(qū)塊小于128bytes時(shí),視為“過小”,為降低額外負(fù)擔(dān),采用memory pool(內(nèi)存池)處理方式,不再借助于***級配置器。

一、***級內(nèi)存配置器解析

***級配置器主要函數(shù)有:allocate分配內(nèi)存、deallocate釋放內(nèi)存、reallocate重新分配內(nèi)存等。

(1)allocate

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

直接調(diào)用C函數(shù)malloc,如果內(nèi)存無法滿足需求,就調(diào)用oom_malloc函數(shù)。

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

原來,這是自己實(shí)現(xiàn)的handler函數(shù)啊,為什么自己實(shí)現(xiàn)呢?因?yàn)樗褂玫牟⒉皇莖perator new配置的內(nèi)存,所以無法使用C++new-handler機(jī)制。

關(guān)于這個(gè)機(jī)制,實(shí)際上能有不少東西可說呢,如果你不熟悉它的用途或自己實(shí)現(xiàn)的方法,我建議你看看《Effective C++》,或者看看我對《Effective C++》做的筆記。我這里主要不是想分析語法方面的東西。

(2)deallocate

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

代碼放上去就應(yīng)該明白了。

(3)reallocate

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

這里依然是調(diào)用C的realloc函數(shù),如果調(diào)用失敗,就調(diào)用oom_realloc函數(shù)。

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

可以看出oom_realloc也是個(gè)handler函數(shù)。

基本上***級內(nèi)存配置器就解釋清楚了。這里再提一點(diǎn):SGI以malloc而非operator new來配置內(nèi)存一方面是歷史原因,另一方面C++并未提供realloc函數(shù)。這樣造成了SGI不能直接使用C++的set_new_handler(),只能自己仿真一個(gè)。如何仿真set_new_handler,是有特定模式的。

#p#

二、第二級內(nèi)存配置器解析

第二級內(nèi)存配置器增加了一些機(jī)制,避免太多小額區(qū)塊造成的內(nèi)存碎片。小額區(qū)塊帶來的不僅是內(nèi)存碎片,配置時(shí)的額外負(fù)擔(dān)也是個(gè)大問題。額外負(fù)擔(dān)永遠(yuǎn)無法避免,畢竟系統(tǒng)要靠這多出來的空間來管理內(nèi)存,但區(qū)塊越小,額外負(fù)擔(dān)所占的比例越大,自然越浪費(fèi)。

第二級內(nèi)存配置器的整體思想是:

(1)如果申請的區(qū)塊超過128bytes,就交給***級內(nèi)存配置器處理。

(2)如果申請的區(qū)塊小于等于128bytes,用內(nèi)存池管理。

具體為:第二級內(nèi)存配置器會(huì)將任何小額區(qū)塊的內(nèi)存需求上調(diào)至8的倍數(shù),并維護(hù)16個(gè)free-lists,各自管理大小為8、16、24、32、40、48、56、64、72、80、88、96、104、112、120、128字節(jié)的小額區(qū)塊。

free-lists中節(jié)點(diǎn)結(jié)構(gòu)如下:(我已經(jīng)將這個(gè)union注釋)

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

注意:union的這種用法,也被稱為”柔性數(shù)組“成員。本質(zhì)上,與小端對齊這種存儲(chǔ)方式有關(guān),這是一種技巧。

(1)allocate

第二級內(nèi)存配置器__default_alloc_template的內(nèi)存分配接口是allocate函數(shù)。

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

關(guān)鍵部分我已經(jīng)用紅框注釋過了。FREELIST_INDEX(n)函數(shù)根據(jù)n的值返回16個(gè)free-list中合適的那個(gè)list的下標(biāo)。

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

再看看ROUND_UP(n),這個(gè)函數(shù)我認(rèn)為寫的挺巧妙的,將bytes值調(diào)整至8字節(jié)的倍數(shù)。

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

理解這個(gè)函數(shù)你可以先舉幾個(gè)bytes值,看看返回值是什么,自然就理解了。refill()函數(shù)很有用處,我放在下面再來介紹。

(2)deallocate()

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

首先判斷區(qū)塊大小,大于128字節(jié)就調(diào)用***級配置器,否則就根據(jù)需要回收的字節(jié)大小,判斷出應(yīng)該把它回歸到哪個(gè)free list,然后由這個(gè)free list回收。

(3)refill()

這個(gè)函數(shù)挺重要的,所以要單獨(dú)拿出來介紹。當(dāng)free list中沒有可用的區(qū)塊時(shí),就調(diào)用這個(gè)函數(shù),為該free list重新填充一部分空間。新的空間取自內(nèi)存池(由chunk_alloc完成)。缺省取得20個(gè)新區(qū)塊,如果內(nèi)存池空間不足,獲得的新區(qū)塊數(shù)目可能小 于20。

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

圖中兩個(gè)紅框是值得注意的兩個(gè)點(diǎn)。一旦從內(nèi)存池獲得內(nèi)存區(qū)塊后,拿出一個(gè)給調(diào)用者,另外的還要找到合適的free list”穿“起來。

(4)內(nèi)存池函數(shù)chunk_alloc()

內(nèi)存池一直用來供給free list。下面要將這個(gè)函數(shù)分開截圖說明了。

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

***個(gè)分支:看看內(nèi)存池內(nèi)的容量夠不夠,夠的話直接拿走就好。

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

第二個(gè)分支:內(nèi)存池不夠20個(gè)塊的容量,但是大于等于1個(gè)塊的長度,就把剩下的都給出去了。此時(shí),內(nèi)存池是空的

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

第三個(gè)分支:如果內(nèi)存池連1個(gè)對應(yīng)的塊都不能提供了,比如需要32字節(jié),但只有8字節(jié)了,這時(shí)候***的做法是把這8個(gè)字節(jié)鏈接到相應(yīng)的free list利用上。不出意料,此時(shí)內(nèi)存池也是空的。

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

第四個(gè)分支:內(nèi)存池空空如也,所以內(nèi)存池求助于運(yùn)行時(shí)堆,堆也沒有那么多空間了,于是就檢查這16個(gè)free list中有哪些塊沒用過呢,把這些補(bǔ)充到內(nèi)存池。

 

C++ STL內(nèi)存配置的設(shè)計(jì)思想與關(guān)鍵源碼分析

第五個(gè)分支:沒錯(cuò),heap也無能為力了,內(nèi)存池干脆直接調(diào)用***級配置器,因?yàn)?**級配置器有new-handler機(jī)制,或許有機(jī)會(huì)釋放其他內(nèi)存拿來此處調(diào)用呢。如果可以,就成功否則拋出bad-alloc異常。

小結(jié):

如果別人問我STL內(nèi)存配置的思想。我可能會(huì)這樣說:C++STL是兩級配置內(nèi)存的,具體來說:***級負(fù)責(zé)管理大塊內(nèi)存,要保證有類似new- handler的機(jī)制;第二級負(fù)責(zé)管理小塊內(nèi)存,為了更好的管理內(nèi)存碎片,建立16個(gè)鏈表,每個(gè)鏈表“穿”著一塊一塊固定大小的內(nèi)存,這16個(gè)鏈表(0至 15)分別“穿”的內(nèi)存是8、16、24…128倍數(shù)關(guān)系。需要內(nèi)存時(shí),從“合適”的鏈表取走,如果“合適”的鏈表內(nèi)存不夠用了,從內(nèi)存池里拿,如果內(nèi)存 池不夠用了,從運(yùn)行時(shí)heap里拿,如果heap也溢出了,就交給***級配置器,因?yàn)樗衝ew-handler機(jī)制。

 

 

 

責(zé)任編輯:王雪燕 來源: 青藜學(xué)士
相關(guān)推薦

2010-01-19 15:36:02

C++語言

2020-08-26 14:00:37

C++string語言

2011-07-20 13:57:06

C++STL

2024-04-30 08:38:31

C++

2010-01-25 13:19:44

C++詞法分析

2010-01-26 14:35:11

C++關(guān)鍵字

2010-02-04 15:41:10

C++內(nèi)存管理

2011-07-20 14:12:48

2011-07-20 13:57:06

C++STL

2012-04-01 10:14:27

linuxunix

2011-04-11 09:47:50

C++內(nèi)存管理

2023-11-21 16:13:38

C++代碼

2010-01-12 17:55:03

C++程序

2010-01-08 16:06:33

C++中struct

2023-12-31 12:56:02

C++內(nèi)存編程

2025-05-26 04:00:00

2010-01-15 19:49:04

C++類庫

2024-01-15 14:03:00

2010-01-15 19:49:04

C++類庫

2023-11-19 22:52:42

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

av五月天在线| 日韩视频在线直播| 偷拍亚洲色图| 裸体一区二区三区| 亚洲二区在线播放视频| 日本精品在线视频| 深夜视频在线观看| 蜜桃视频网站在线| 免费观看久久av| 玉足女爽爽91| 国产精品一香蕉国产线看观看| 动漫av在线免费观看| 好了av在线| 日韩黄色小视频| 日韩电影网在线| 欧美日韩一区二区三区电影| 在线观看av大片| 国产剧情一区| 色婷婷一区二区| 蜜桃成人免费视频| www欧美在线| 理论片一区二区在线| 亚洲宅男天堂在线观看无病毒| 国产日韩欧美中文| 天天爽天天爽天天爽| 成人在线高清| 中文字幕亚洲成人| 91啪国产在线| 超碰手机在线观看| 视频一区在线| 欧美亚洲动漫精品| 亚洲欧美日韩另类精品一区二区三区| av手机天堂网| 第九色区aⅴ天堂久久香| 欧美亚洲动漫精品| 亚洲自偷自拍熟女另类| 欧美xxx.com| 久久午夜精品| 视频在线观看一区二区| 亚洲天堂国产视频| jizz性欧美| 成人妖精视频yjsp地址| 国模视频一区二区三区| 亚洲精品第二页| 中文av在线全新| 欧美激情在线看| 国产欧美一区二区三区视频| 国产精品美女久久久久av爽| 久草成人在线| 日韩av一区在线观看| 久久国产免费视频| 精品入口麻豆88视频| 亚洲一区二区视频在线| 麻豆av一区二区三区久久| 亚洲国产www| 欧美亚洲自偷自偷| 色偷偷9999www| 欧美xxxx精品| 国产suv精品一区| 在线免费精品视频| 亚洲色婷婷久久精品av蜜桃| 天堂视频中文在线| 极品美女销魂一区二区三区| 欧美精品情趣视频| 波多野吉衣中文字幕| 欧美女同一区| 欧美激情资源网| 天天人人精品| 蜜臀久久99精品久久久| 日本不卡123| 久久久久国产精品www| av网在线播放| 欧美日韩国产在线观看网站| 制服丝袜在线91| 日韩精品一区二区三区久久| 男人久久天堂| 亚洲免费看黄网站| 日本一区二区三区免费看| av免费在线观看不卡| 久久婷婷激情| 国产精品一区二区3区| 国产一区二区三区四区视频 | 欧美大片一区二区三区| 欧美日韩在线视频一区二区三区| 日本蜜桃在线观看视频| 日本高清视频一区二区| 久久亚洲a v| 91sp网站在线观看入口| 99久久免费视频.com| 成人乱人伦精品视频在线观看| 天天综合天天干| 日韩 欧美一区二区三区| 91精品视频在线看| 色屁屁草草影院ccyycom| 国精品**一区二区三区在线蜜桃 | av片免费观看| 国产精品大片| 久久久精品2019中文字幕神马| 草草地址线路①屁屁影院成人| 秋霞影院一区| 日韩精品中文字幕久久臀| 国内av一区二区| 福利一区在线| 精品福利一二区| 亚洲精品成人无码毛片| 欧美女王vk| 久久福利网址导航| 欧美brazzers| 成人精品在线视频观看| 五月婷婷综合色| 久久香蕉av| 欧美日韩在线精品一区二区三区激情| 国产淫片免费看| 福利一区二区三区视频在线观看 | 国产99在线|中文| 国产女主播福利| 黑人巨大精品欧美一区| 九九九热999| 午夜视频1000| 94色蜜桃网一区二区三区| 精品国产乱码久久久久久丨区2区| 亚洲av永久纯肉无码精品动漫| xfplay精品久久| 久久99国产精品| 国产精品久久麻豆| 日韩欧美在线观看| 国产精品333| 老色鬼在线视频| 91精品国产综合久久精品图片| 亚洲免费av一区| 久久99国产精一区二区三区| 欧美激情精品久久久久久大尺度| 欧美日韩大片在线观看| 黑人一区二区| 成人免费网站在线| 国产乱视频在线观看| 亚洲国产精品成人综合色在线婷婷| 日韩成人在线资源| 日本www在线观看视频| 欧美日韩中文在线观看| 99精品一区二区三区无码吞精| 欧美韩日一区| 欧美激情性做爰免费视频| 91禁在线观看| 国产精品欧美久久久久无广告| 青少年xxxxx性开放hg| 日韩激情av| 欧美日韩国产精品一区二区不卡中文| 久久精品99国产| 欧美性www| 精品噜噜噜噜久久久久久久久试看 | 国产女主播一区二区| 日韩在线视频免费| 亚洲一区影音先锋| 日本女人性视频| 伊人久久大香线蕉综合网蜜芽| 在线观看视频亚洲| 免费一级黄色大片| 国产精品亚洲午夜一区二区三区| 国产精品亚洲不卡a| 国产在线观看黄| 一区二区在线观看免费| 国产男女无遮挡猛进猛出| 一区二区三区在线电影| 欧美亚洲日本黄色| 国产手机视频在线| 亚洲激情综合网| 日韩黄色一区二区| 国产精品久久久久久久免费软件| 国产日韩欧美自拍| 日本中文在线观看| 天天亚洲美女在线视频| 黄色小视频免费网站| 91蜜臀精品国产自偷在线| 91亚洲国产成人久久精品网站| 成人区精品一区二区不卡| 日韩视频免费直播| www.日本高清视频| 在线成人h网| 国产精品一区二区三区免费视频 | 久久午夜电影网| 国产内射老熟女aaaa| 日韩一区二区三区在线免费观看| 日韩一区二区免费在线电影| 国产亚洲精品久久久久久打不开| 日韩成人免费电影| 91免费视频黄| 女同另类激情重口| 久精品免费视频| 91女人18毛片水多国产| 亚洲乱码日产精品bd| 日韩成人av一区二区| 午夜精品999| 国产伦精品免费视频| 麻豆传媒视频在线观看| 亚洲精品一区二区在线观看| 中文字幕黄色片| av网站一区二区三区| 免费国产成人av| 婷婷五月色综合香五月| 国产欧美在线视频| 爱情岛亚洲播放路线| 日韩精品在线看片z| 国产日产精品一区二区三区| 国产精品免费aⅴ片在线观看| gogo亚洲国模私拍人体| 一本久道综合久久精品| caoporn国产精品免费公开| 国产色在线观看| 亚洲激情自拍图| 人人干人人干人人干| 成人免费高清视频| 一道本在线免费视频| 久久人体视频| 精品国产乱码一区二区三区四区 | 亚洲综合一区二区不卡| 国产日产一区二区| 精品亚洲一区二区三区在线播放 | 亚洲欧美日韩在线综合| 人人网欧美视频| 99精品99久久久久久宅男| 成人免费一区| 欧美在线影院在线视频| 日本a一级在线免费播放| 欧美日韩亚洲视频一区| 国模无码国产精品视频| 欧美国产精品一区二区三区| 91九色蝌蚪porny| 狠狠色2019综合网| 超碰在线播放91| 亚洲国产精品日韩专区av有中文| 成人综合网网址| 播放一区二区| www.日本久久久久com.| 国产成人毛毛毛片| 欧美日韩小视频| 啪啪小视频网站| 国产精品久久久久久久午夜片| 亚洲黄色免费在线观看| 日韩制服丝袜先锋影音| 免费国产黄色网址| 欧美性感美女一区二区| 精品欧美一区二区在线观看视频| 亚洲一区二区三区四区电影| 91po在线观看91精品国产性色| 免费在线视频你懂得| 日韩成人久久久| 无码精品人妻一区二区| 亚洲国产一区自拍| 韩国av永久免费| 在线观看一区日韩| 国产又粗又猛又黄视频| 色久优优欧美色久优优| 亚洲成熟少妇视频在线观看| 色网综合在线观看| 无码人妻久久一区二区三区| 色综合久久精品| 日韩精品一区不卡| 欧洲一区在线观看| 亚洲天堂avav| 91精品国产高清一区二区三区 | 九色porny自拍视频在线播放| 欧美国产日本高清在线| 2020av在线| 最近2019年手机中文字幕| 粉嫩av在线播放| 视频一区视频二区国产精品 | 在线观看免费污视频| 久久国产成人午夜av影院| 久久久久99精品成人片| 精品久久久久久久久久久下田| 日韩电影免费观看高清完整| 成人激情电影在线| 99精品视频网站| 欧美精选一区| 永久域名在线精品| 亚洲区小说区| 亚洲成人一区二区三区| 一本一本久久a久久综合精品| 国产一区二区三区在线免费| 亚洲激情av| 大胆欧美熟妇xx| 最新日韩av| 8x8x最新地址| 国产精品一区专区| 一本色道综合久久欧美日韩精品| 国产欧美一区视频| 波多野结衣爱爱视频| 国产精品嫩草影院av蜜臀| 日韩三级在线观看视频| 久久影音资源网| 丁香激情五月少妇| 久久老女人爱爱| 成年人网站在线观看视频| 亚洲综合一区二区精品导航| 九九精品免费视频| 制服丝袜日韩国产| 日韩av成人| 日韩三级影视基地| 自拍一区在线观看| 51精品国产人成在线观看 | 97久久天天综合色天天综合色hd| 欧美91在线| 男人的天堂成人| 久久久久久自在自线| 男人添女人下面高潮视频| 麻豆91精品视频| 亚洲熟妇一区二区三区| 97se狠狠狠综合亚洲狠狠| 中文乱码字幕高清一区二区| 午夜精品福利视频网站| 国产五月天婷婷| 亚洲午夜久久久久久久久电影网 | 欧美aaa免费| 国产精品视频色| 国产原创一区| 91精品久久久久久久| 香蕉久久夜色精品国产更新时间 | 亚洲人人夜夜澡人人爽| 亚洲精品国产精华液| 国产情侣呻吟对白高潮| 日韩av在线不卡| 久久免费电影| av在线不卡一区| 亚洲一区二区日韩| 亚洲欧美日韩一级| 久久女同精品一区二区| 国产精品2020| 欧美电影免费观看完整版| 色大18成网站www在线观看| 国产97在线亚洲| 色天天色综合| av免费观看大全| 成人免费视频视频在线观看免费 | 一区二区三区四区日韩| 男人添女人下面免费视频| 久久久国产综合精品女国产盗摄| 熟女少妇内射日韩亚洲| 亚洲综合在线免费观看| 国产不卡av在线播放| 大胆欧美人体视频| 欧美私密网站| 国产在线观看一区| 一区二区三区国产盗摄| 国产高清成人久久| 午夜成人在线视频| 日本精品999| 国语自产在线不卡| 天海翼亚洲一区二区三区| 无罩大乳的熟妇正在播放| 99久久综合色| 亚洲久久在线观看| 亚洲欧美一区二区三区四区| 日本在线人成| 91精品久久久久久久久久久久久久 | 久草在线视频福利| 国产伦精品一区二区三区照片91| 激情欧美国产欧美| 色呦呦一区二区| 日本道色综合久久| 色哟哟免费在线观看| 亚洲综合av影视| 亚洲久久成人| 国产传媒国产传媒| 欧美日本视频在线| 亚洲区小说区图片区| 青草热久免费精品视频| 国产亚洲一区二区三区啪| 婷婷免费在线观看| 亚洲一区二区三区精品在线| 无码国精品一区二区免费蜜桃| 4438全国亚洲精品在线观看视频| 国产不卡一区| 一级黄色大片儿| 国产日产亚洲精品系列| 国产亚洲精品久久777777| 日韩国产在线看| 成人高清一区| 国产一二三区在线播放| 2024国产精品| 国产精品久久久久久在线| 亚洲欧美日本另类| 午夜精品久久久久久毛片| 久操手机在线视频| 国产亚洲一本大道中文在线| 一级特黄aaa大片在线观看| 欧美精品videosex牲欧美| 亚洲影院天堂中文av色| 亚洲综合20p| 欧美日韩免费区域视频在线观看| 婷婷成人激情| 激情小说网站亚洲综合网| 蜜桃精品视频在线| 91在线无精精品白丝| 日韩三级在线观看| 色老太综合网| 欧美日韩国产综合在线| 亚洲自啪免费| 熟女av一区二区| 亚洲男人天堂2019|