• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    C/C++程序內(nèi)存泄漏檢測(cè)算法的研究

    2021-05-16 17:25:00仵俊
    現(xiàn)代信息科技 2021年22期
    關(guān)鍵詞:程序

    摘? 要:為了獲得最佳性能,C/C++語(yǔ)言把操縱內(nèi)存的權(quán)限以指針的方式暴露給開(kāi)發(fā)人員。但是C/C++語(yǔ)言編譯器GCC和Clang都不提供內(nèi)存安全檢測(cè),導(dǎo)致開(kāi)發(fā)人員使用C/C++語(yǔ)言編寫(xiě)的項(xiàng)目可能存在內(nèi)存泄漏的風(fēng)險(xiǎn)。文章介紹了改進(jìn)指針?biāo)惴ê蛃hared_ptr源碼,分析了它們檢測(cè)內(nèi)存泄漏的方式,最后指出該類算法的缺陷,提出改進(jìn)思路,并建議用戶避免寫(xiě)出該類算法無(wú)法檢測(cè)的代碼結(jié)構(gòu)。

    關(guān)鍵詞:C/C++程序;內(nèi)存泄漏;改進(jìn)指針?biāo)惴?shared_ptr

    中圖分類號(hào):TP311 ? ? 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2096-4706(2021)22-0098-03

    Abstract: In order to obtain the best performance, C/C++ language exposes the permission to manipulate memory to developers in the form of pointers. However, the C/C++ language compiler GCC and Clang do not provide memory security detection, which leads to the risk of memory leakage for projects written by developers in C/C++ language. This paper introduces the improved pointer algorithm and shared_ptr source code, analyzes their ways to detect memory leakage, finally points out the defects of this kind of algorithm and puts forward improvement ideas, and advises users to avoid writing code structures that cannot be detected by such algorithms.

    Keywords: C/C++ program; memory leak; improved pointer algorithm; shared_ ptr

    0? 引? 言

    隨著使用C/C++語(yǔ)言所構(gòu)建項(xiàng)目規(guī)模的不斷增大,內(nèi)存安全也越來(lái)越受重視。內(nèi)存泄漏往往在程序運(yùn)行中就發(fā)生,不易被發(fā)現(xiàn)和修改。相較于其他運(yùn)行于虛擬機(jī)上的語(yǔ)言(如Python和Java),C/C++為了實(shí)現(xiàn)對(duì)內(nèi)存的細(xì)粒度的操作,沒(méi)有設(shè)計(jì)垃圾收集器。因此,使用C/C++編寫(xiě)項(xiàng)目時(shí),開(kāi)發(fā)人員需要格外注意內(nèi)存的申請(qǐng)和釋放。本文介紹了改進(jìn)指針?biāo)惴╗1-3]和shared_ptr[4,5]源碼,分析了它們對(duì)內(nèi)存泄漏的檢測(cè)方式,并指出它們所存在的不足。希望讀者可以通過(guò)改進(jìn)指針?biāo)惴ɑ騭hare_ptr來(lái)規(guī)避內(nèi)存泄漏,盡量不要寫(xiě)出連檢測(cè)算法也無(wú)法處理的代碼結(jié)構(gòu)。

    1? 內(nèi)存泄漏檢測(cè)原理分析

    1.1? 改進(jìn)指針?biāo)惴?/p>

    改進(jìn)指針?biāo)惴ㄊ且环N新的內(nèi)存安全性動(dòng)態(tài)分析方法,采用源碼插樁技術(shù)實(shí)現(xiàn),支持復(fù)雜的動(dòng)態(tài)內(nèi)存檢查。改進(jìn)指針?lè)椒ǖ淖畲髣?chuàng)新點(diǎn)是分別為每一個(gè)內(nèi)存對(duì)象和指針創(chuàng)建和維護(hù)一個(gè)狀態(tài)節(jié)點(diǎn)數(shù)據(jù)(status node data, snd)和指針元數(shù)據(jù)(pointer matedata, pmd)。該方法不僅可以在程序運(yùn)行時(shí)記錄每個(gè)指針指向內(nèi)存對(duì)象的邊界信息,還可以記錄內(nèi)存對(duì)象所對(duì)應(yīng)snd的狀態(tài)和計(jì)數(shù)信息。snd的狀態(tài)(stat)是指對(duì)應(yīng)內(nèi)存對(duì)象的內(nèi)存類型,如無(wú)效(invalid)、棧(heap)、全局(global)、靜態(tài)(static)和函數(shù)(function)等,snd的定義為

    1: typedef enum{

    2:? ?invalid, heap,global,...

    3: } status;

    4: typedef struct{

    5:? ?status stat;size_t count; 7: } SND;

    由于多個(gè)指針引用同一塊內(nèi)存,這些指針?biāo)鶎?duì)應(yīng)的指針元數(shù)據(jù)將共享同一個(gè)snd。通過(guò)snd的count變量判斷出該內(nèi)存對(duì)象無(wú)用后,其所對(duì)應(yīng)的狀態(tài)節(jié)點(diǎn)也會(huì)足夠“智能”地自我銷(xiāo)毀,不會(huì)常駐內(nèi)存。

    指針pmd是改進(jìn)指針?biāo)惴ǖ闹匾獢?shù)據(jù)結(jié)構(gòu),用來(lái)存儲(chǔ)運(yùn)行時(shí)指針相關(guān)信息。改進(jìn)指針?biāo)惴ㄔ诔绦蜻\(yùn)行時(shí)為每個(gè)指針變量維護(hù)一個(gè)pmd。pmd結(jié)構(gòu)存儲(chǔ)對(duì)應(yīng)指針?biāo)脙?nèi)存對(duì)象的基地址(base)、邊界地址(bound)以及內(nèi)存對(duì)象的snd地址,pmd結(jié)構(gòu)定義為:

    1: typedef struct{

    2:? ? ?void *base;

    3:? ? ?void *bound;

    4:? ? ?SND *snda;

    5: }PMD;

    改進(jìn)指針?biāo)惴ㄔ跈z查內(nèi)存泄漏上可以做到非常細(xì)粒度,這是其他工具所不具備的優(yōu)勢(shì)。第2行執(zhí)行賦值語(yǔ)句后,指針p2和p1同時(shí)指向同一塊8個(gè)字節(jié)的堆內(nèi)存,它們的pmd共享同一個(gè)snd:

    1:p1 = (int*)malloc(8);2:p2 = p1;3:int i; p1 = &i;4:p2 = &i; /*mem leak*/

    第3行賦值語(yǔ)句執(zhí)行后,狀態(tài)如圖1(a)所示,p1指針指向變量i的首地址,pmd引用了變量i的snd,因此指向堆內(nèi)存的指針減1,相應(yīng)snd的count也減1。第4行賦值語(yǔ)句執(zhí)行后,狀態(tài)如圖1(b)所示。p2指針不再指向堆內(nèi)存,p2指針pmd引用變量i的snd,此時(shí)8個(gè)字節(jié)的堆內(nèi)存沒(méi)有指針指向它,因此其snd的count值為0。在檢查到堆內(nèi)存的count值為0后,內(nèi)存泄漏的錯(cuò)誤將被報(bào)出,因?yàn)闆](méi)有指針指向這塊內(nèi)存。

    1.2? shared-_ptr原理分析

    閱讀C++STL源碼可知,shared_ptr的_M_use_count變量值為0是判斷內(nèi)存泄漏的必要條件,shared_ptr部分重要源碼:

    1:? __shared_count<_Lp>? _M_refcount;? ? ?// Reference counter

    2: _Sp_counted_base<_Lp>*? _M_pi; //__shared_count類私有變量

    3: typedef int _Atomic_word; ? ? ?//C++標(biāo)準(zhǔn)庫(kù)的GNU擴(kuò)展文件atomic_word.h

    4:? _Atomic_word? _M_use_count;? ? ? ? // _Sp_counted_base類私有變量

    5: inline void _Sp_counted_base<_S_single>::_M_add_ref_copy()

    6: { ++_M_use_count; } ? ? ?//_Sp_counted_base類的內(nèi)聯(lián)函數(shù)

    7: _Sp_counted_base<_S_single>::_M_release() noexcept

    8: if (--_M_use_count == 0){

    9: _M_dispose();? ? ? //當(dāng)_M_use_count自減到0,釋放資源? ? ?...}

    代碼均來(lái)自C++11標(biāo)準(zhǔn)模板庫(kù)源文件。

    _M_refcount是shared_ptr模板類的成員變量,它是用于處理引用計(jì)數(shù)最核心的變量。_M_refcount的類型__shared_count也是一個(gè)模板類,這個(gè)類有一個(gè)私有指針變量_M_pi,所有指向同一動(dòng)態(tài)對(duì)象的shared_ptr都共享同一個(gè)_M_pi變量,如第2行所示。_M_pi變量指向的_Sp_counted_base類型有一個(gè)int類型的_M_use_count變量,如第3、第4行所示。_M_use_count變量表示引用數(shù),每當(dāng)有新的shared_ptr通過(guò)函數(shù)調(diào)用或拷貝等操作指向同一個(gè)動(dòng)態(tài)對(duì)象時(shí),_M_pi變量都會(huì)調(diào)用如第5、第6行所示的內(nèi)聯(lián)函數(shù)_M_add_ref_copy,將_M_use_count值加1。當(dāng)指向某動(dòng)態(tài)對(duì)象的shared_ptr不再指向該動(dòng)態(tài)對(duì)象時(shí),其析構(gòu)函數(shù)會(huì)使_M_pi變量調(diào)用_M_release(),將_M_use_count值減1,_M_release()也會(huì)在此時(shí)判斷無(wú)用動(dòng)態(tài)對(duì)象。如第7~9行所示,_M_release()函數(shù)調(diào)用將M_use_count值減1后示,若_M_use_count值為0,則表示最后一個(gè)指向該動(dòng)態(tài)對(duì)象的shared_ptr被銷(xiāo)毀或最后一個(gè)指向該動(dòng)態(tài)對(duì)象的shared_ptr通過(guò)操作符“=”或reset函數(shù)調(diào)用被賦值為其他值,檢測(cè)產(chǎn)生內(nèi)存泄漏,因此調(diào)用_M_dispose()來(lái)釋放無(wú)用動(dòng)態(tài)對(duì)象。

    2? 無(wú)法檢測(cè)的內(nèi)存泄漏介紹

    通過(guò)改進(jìn)指針?biāo)惴ê蛃hared_ptr判斷的堆內(nèi)存對(duì)象泄漏都是依據(jù)引用計(jì)數(shù)值“PREFIXcount”為0來(lái)判斷的。然而,我們?cè)谡{(diào)試專業(yè)測(cè)試集時(shí)發(fā)現(xiàn)當(dāng)“PREFIXcount”值大于0時(shí),也存在內(nèi)存泄漏和無(wú)用動(dòng)態(tài)對(duì)象。在程序中的表現(xiàn)為:存在數(shù)量大于等于1的指針指向該內(nèi)存對(duì)象,但是這些指針無(wú)法獲取,從而導(dǎo)致內(nèi)存泄漏?!爸羔樧灾浮本褪瞧渲幸环N:

    /*point-self*/

    1:#include <malloc.h>

    2:int main()

    3:{

    4: int **m, i = 5;

    5: m = malloc(sizeof(int*)*6);

    6: m[i] = (int*)m;

    7: m = 0;? /* mem leak*/

    8: return 0;}

    第5行賦值語(yǔ)句執(zhí)行后,指針m指向一塊容納6個(gè)“int*”類型變量的內(nèi)存對(duì)象首地址。第6行賦值語(yǔ)句執(zhí)行后,m[i]相當(dāng)于*(m+5)向該內(nèi)存尾部空間寫(xiě)進(jìn)了m變量的值(即該內(nèi)存首地址)。當(dāng)?shù)?行中的m變量通過(guò)賦值語(yǔ)句指向它時(shí),會(huì)發(fā)生內(nèi)存泄漏,狀態(tài)如圖2所示。雖然仍然有指針指向該堆內(nèi)存對(duì)象,但是指向它的指針來(lái)自于自身空間的內(nèi)部指針,由于任何方式都無(wú)法獲取內(nèi)部指針,因此導(dǎo)致內(nèi)存泄漏。

    另一種“循環(huán)引用”也會(huì)導(dǎo)致這種內(nèi)存泄漏:

    /*Memory leaks on memory circles.*/

    1:#include <malloc.h>

    2:typedef struct st {

    3:? ? int i;

    4:? ?struct st *next;

    5:} st;

    6:int main(){

    7: st *m, *n;

    8: m = malloc(sizeof(st));

    9: n = malloc(sizeof(st));

    10: n->next = m;

    11: m->next = n; //構(gòu)成循環(huán)狀態(tài)

    12: m=0;

    13: n=0;? ? ? ? /*mem leak*/ return 0;}

    循環(huán)引用代碼

    第8、第9行賦值語(yǔ)句執(zhí)行后,指針m和指針n分別指向一個(gè)容納st類型變量的內(nèi)存對(duì)象首地址。第10、第11行使這兩個(gè)內(nèi)存對(duì)象的內(nèi)部指針“struct st *next”形成互指彼此內(nèi)存對(duì)象的狀態(tài),因此在第12、第13行執(zhí)行后,引用這兩個(gè)內(nèi)存對(duì)象的指針只來(lái)自彼此內(nèi)部,形成了一個(gè)沒(méi)有起點(diǎn)的環(huán),此時(shí)的狀態(tài)如圖3所示。因此在程序運(yùn)行到圖2和圖3這兩種狀態(tài)時(shí),改進(jìn)指針?biāo)惴ê蛃hared_ptr的“計(jì)數(shù)值”都大于0,根據(jù)它們“計(jì)數(shù)值”大于0的描述,這個(gè)內(nèi)存對(duì)象是有用的,但是事實(shí)上已經(jīng)存在內(nèi)存泄漏。

    3? 改進(jìn)方案

    雖然C++1x提供了一個(gè)解決方案,但是該方案過(guò)于依賴用戶,需要開(kāi)發(fā)人員在使程序構(gòu)成循環(huán)時(shí),利用weak_ptr的弱引用替換部分shared_ptr的強(qiáng)引用,程序編寫(xiě)者通過(guò)手動(dòng)破壞循環(huán)結(jié)構(gòu)來(lái)解決shared_ptr的設(shè)計(jì)缺陷。我們需要實(shí)現(xiàn)自動(dòng)化和智能化的工具,目的是解決人為原因帶來(lái)的易錯(cuò)性、低效性和不可靠性問(wèn)題,靠開(kāi)發(fā)人員自己發(fā)現(xiàn)程序特定缺陷并做出相應(yīng)修改是非常低效的。

    shared_ptr的設(shè)計(jì)丟失了動(dòng)態(tài)對(duì)象信息,所有指向同一個(gè)動(dòng)態(tài)對(duì)象的指針都共享同一個(gè)_Sp_counted_base類型_M_pi,但是_Sp_counted_base類私有變量只有“計(jì)數(shù)值”和一系列用來(lái)更新“計(jì)數(shù)值”的接口。判斷程序是否存在“指針自指”,需要獲取內(nèi)存對(duì)象的信息,由于shared_ptr的功能單一和對(duì)高性能的追求,并沒(méi)有記錄動(dòng)態(tài)對(duì)象的具體信息。相較于shared_ptr的設(shè)計(jì),改進(jìn)指針?biāo)惴ㄓ涗浀膬?nèi)存對(duì)象信息更加具體和完善。用pmd和snd的聯(lián)接,模擬了指針指向內(nèi)存對(duì)象的狀態(tài),指針pmd包含了所指內(nèi)存對(duì)象的基地址和邊界。因此改進(jìn)指針?biāo)惴ㄓ涗浀臓顟B(tài)信息更用于實(shí)現(xiàn)對(duì)該類型錯(cuò)誤的檢測(cè)。

    根據(jù)改進(jìn)指針?biāo)惴ǖ脑创a,我們提出完善改進(jìn)指針?biāo)惴ǖ臋z測(cè)接口,在指針pmd與snd將要解綁時(shí),執(zhí)行“指針自指”算法:掃描存儲(chǔ)pmd的hash表,查找當(dāng)前“解綁”pmd記錄的邊界內(nèi)自指指針數(shù)和對(duì)應(yīng)snd的count是否相同,若相同snd則可判斷出發(fā)生“指針自指”,導(dǎo)致內(nèi)存泄漏。然后采用深度遍歷的方式,逐個(gè)解綁該內(nèi)存泄漏范圍內(nèi)的指針pmd。

    4? 結(jié)? 論

    利用C/C++語(yǔ)言編寫(xiě)項(xiàng)目后,可以使用改進(jìn)指針?biāo)惴ê蛃hared_ptr來(lái)檢測(cè)普通的內(nèi)存泄漏。完善后的改進(jìn)指針?biāo)惴ㄒ部梢詸z測(cè)“指針自指”發(fā)生的內(nèi)存泄漏,但是盡量避免編寫(xiě)“循環(huán)引用”代碼結(jié)構(gòu),因?yàn)楸疚恼撟C了該結(jié)構(gòu)導(dǎo)致的內(nèi)存泄漏,目前C/C++尚未找到一個(gè)較為完備的檢測(cè)算法來(lái)對(duì)內(nèi)存泄漏進(jìn)行檢測(cè)和預(yù)防。甚至是Google公司開(kāi)發(fā)的內(nèi)存安全性動(dòng)態(tài)分析工具AddressSanitizer和國(guó)內(nèi)基于改進(jìn)指針?biāo)惴▽?shí)現(xiàn)的Movec都無(wú)法完全檢測(cè)出C/C++程序中“循環(huán)引用”導(dǎo)致的內(nèi)存泄漏。

    參考文獻(xiàn):

    [1] 朱云龍.C程序運(yùn)行時(shí)監(jiān)控和驗(yàn)證的插樁方法研究與應(yīng)用 [D].南京:南京航空航天大學(xué),2016.

    [2] CHEN Z,TAO C Q,ZHANG Z Y,et al. Poster: Beyond Spatial and Temporal Memory Safety [C]//2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion). Gothenburg:IEEE,2018:189-190.

    [3] 嚴(yán)峻琦.C程序內(nèi)存安全錯(cuò)誤的運(yùn)行時(shí)檢測(cè)技術(shù)研究與實(shí)現(xiàn) [D].南京:南京航空航天大學(xué),2017.

    [4] 葉蓉,陳榕.運(yùn)用CAR智能指針實(shí)現(xiàn)Callback機(jī)制 [J].計(jì)算機(jī)技術(shù)與發(fā)展,2008(2):9-12+16.

    [5] 張彤,何源.一種自適應(yīng)的引用計(jì)數(shù)智能指針的實(shí)現(xiàn) [J].成都大學(xué)學(xué)報(bào)(自然科學(xué)版),2007(1):55-57.

    作者簡(jiǎn)介:仵?。?997—),男,漢族,江蘇南京人,碩士研究生在讀,研究方向:軟件驗(yàn)證。

    猜你喜歡
    程序
    給Windows添加程序快速切換欄
    試論我國(guó)未決羈押程序的立法完善
    失能的信仰——走向衰亡的民事訴訟程序
    “程序猿”的生活什么樣
    英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
    基于VMM的程序行為異常檢測(cè)
    偵查實(shí)驗(yàn)批準(zhǔn)程序初探
    我國(guó)刑事速裁程序的構(gòu)建
    淺析德國(guó)刑事訴訟程序之調(diào)查程序
    人間(2015年23期)2016-01-04 12:47:46
    創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
    国产精品亚洲av一区麻豆| av不卡在线播放| 中文字幕高清在线视频| 性色av一级| 精品人妻一区二区三区麻豆| 岛国毛片在线播放| 这个男人来自地球电影免费观看| 久久久精品国产亚洲av高清涩受| 波野结衣二区三区在线| 丝袜美足系列| 婷婷色综合大香蕉| 天天操日日干夜夜撸| 国产精品久久久久久精品古装| 久久影院123| www.熟女人妻精品国产| 一区二区av电影网| 午夜av观看不卡| 电影成人av| 久久99精品国语久久久| 国产成人精品久久久久久| 国产免费福利视频在线观看| 免费看十八禁软件| 亚洲人成电影观看| 男人操女人黄网站| 国产成人91sexporn| 啦啦啦在线观看免费高清www| 国产精品秋霞免费鲁丝片| 少妇人妻 视频| 女警被强在线播放| 久久久久视频综合| 美女福利国产在线| 亚洲国产成人一精品久久久| 五月开心婷婷网| 亚洲精品日韩在线中文字幕| 国产片内射在线| 一级毛片我不卡| 十八禁高潮呻吟视频| 女性生殖器流出的白浆| 日本色播在线视频| 在线观看国产h片| 欧美日韩av久久| 男人添女人高潮全过程视频| 纵有疾风起免费观看全集完整版| 少妇的丰满在线观看| 精品国产国语对白av| 免费在线观看影片大全网站 | 日韩大码丰满熟妇| 日韩av免费高清视频| 亚洲欧美一区二区三区久久| 国产免费一区二区三区四区乱码| 亚洲,一卡二卡三卡| 18禁裸乳无遮挡动漫免费视频| 免费看十八禁软件| 中文字幕制服av| 啦啦啦视频在线资源免费观看| 欧美久久黑人一区二区| 国产精品三级大全| 亚洲国产欧美在线一区| 成人三级做爰电影| 国产成人欧美在线观看 | 免费看十八禁软件| 亚洲国产日韩一区二区| 人人妻,人人澡人人爽秒播 | 十八禁网站网址无遮挡| 1024香蕉在线观看| 久久人人97超碰香蕉20202| 午夜福利免费观看在线| 80岁老熟妇乱子伦牲交| 美女中出高潮动态图| 亚洲成人免费电影在线观看 | 国产视频一区二区在线看| 精品久久久精品久久久| 少妇猛男粗大的猛烈进出视频| 精品一区二区三区av网在线观看 | 十分钟在线观看高清视频www| 久久精品成人免费网站| 久久人妻福利社区极品人妻图片 | 久久久精品国产亚洲av高清涩受| 国产xxxxx性猛交| 国产xxxxx性猛交| 悠悠久久av| 97精品久久久久久久久久精品| 天天躁日日躁夜夜躁夜夜| 国产免费视频播放在线视频| 男女国产视频网站| 国产精品一区二区免费欧美 | 欧美日韩成人在线一区二区| 国产高清不卡午夜福利| 十八禁网站网址无遮挡| 男女无遮挡免费网站观看| 久久久久久久国产电影| 一级黄色大片毛片| 无限看片的www在线观看| 午夜91福利影院| 国产精品一区二区在线不卡| 91麻豆av在线| 日韩伦理黄色片| 大型av网站在线播放| 在线精品无人区一区二区三| 精品福利观看| 下体分泌物呈黄色| 老司机影院成人| 超碰成人久久| 人妻人人澡人人爽人人| 国产免费视频播放在线视频| 国产激情久久老熟女| 熟女少妇亚洲综合色aaa.| 最新在线观看一区二区三区 | 久久性视频一级片| 欧美精品人与动牲交sv欧美| 亚洲激情五月婷婷啪啪| 久久精品国产亚洲av高清一级| 成年美女黄网站色视频大全免费| 大陆偷拍与自拍| 香蕉丝袜av| 美女脱内裤让男人舔精品视频| 精品国产一区二区三区久久久樱花| 性高湖久久久久久久久免费观看| 亚洲中文av在线| 亚洲人成77777在线视频| 99国产综合亚洲精品| 叶爱在线成人免费视频播放| 亚洲av电影在线进入| 国产成人精品在线电影| 亚洲国产日韩一区二区| 亚洲av日韩精品久久久久久密 | 欧美在线一区亚洲| 大型av网站在线播放| 嫁个100分男人电影在线观看 | 国产成人精品久久二区二区免费| 9191精品国产免费久久| 一本大道久久a久久精品| 黄色视频在线播放观看不卡| 亚洲一区中文字幕在线| 国产精品熟女久久久久浪| 老司机在亚洲福利影院| 亚洲精品成人av观看孕妇| 国产成人欧美| 国产日韩欧美亚洲二区| 人妻 亚洲 视频| 飞空精品影院首页| 天堂俺去俺来也www色官网| 亚洲精品国产区一区二| 亚洲av成人不卡在线观看播放网 | 国产视频首页在线观看| 国产高清videossex| 青青草视频在线视频观看| 亚洲 欧美一区二区三区| 久久精品国产综合久久久| 黄色视频在线播放观看不卡| 妹子高潮喷水视频| 亚洲精品国产区一区二| 国产日韩欧美亚洲二区| 国产午夜精品一二区理论片| 80岁老熟妇乱子伦牲交| 久热这里只有精品99| 老汉色av国产亚洲站长工具| 日韩,欧美,国产一区二区三区| 黑丝袜美女国产一区| 日韩人妻精品一区2区三区| 婷婷色综合大香蕉| 国产成人欧美在线观看 | 伦理电影免费视频| 国产av国产精品国产| 国产av国产精品国产| 国产精品熟女久久久久浪| 亚洲av在线观看美女高潮| av线在线观看网站| 亚洲国产看品久久| 日韩欧美一区视频在线观看| 熟女av电影| 视频区欧美日本亚洲| 午夜福利免费观看在线| 精品久久久久久久毛片微露脸 | 妹子高潮喷水视频| 欧美+亚洲+日韩+国产| 国产在线一区二区三区精| 乱人伦中国视频| 日韩欧美一区视频在线观看| 在线精品无人区一区二区三| 成人午夜精彩视频在线观看| 热99久久久久精品小说推荐| a级片在线免费高清观看视频| 黄色一级大片看看| 性色av乱码一区二区三区2| 久久免费观看电影| 免费在线观看黄色视频的| 日韩中文字幕视频在线看片| 国产片内射在线| 精品第一国产精品| 真人做人爱边吃奶动态| 曰老女人黄片| 999久久久国产精品视频| 欧美av亚洲av综合av国产av| 国产午夜精品一二区理论片| 亚洲精品美女久久av网站| 肉色欧美久久久久久久蜜桃| 亚洲一码二码三码区别大吗| 制服诱惑二区| 在线观看免费日韩欧美大片| 亚洲av男天堂| 国产成人啪精品午夜网站| 精品一区二区三区av网在线观看 | 国产日韩欧美视频二区| 亚洲图色成人| 久热这里只有精品99| videosex国产| 亚洲黑人精品在线| 国产一区二区三区av在线| 久久久精品国产亚洲av高清涩受| 欧美大码av| 男男h啪啪无遮挡| 美女国产高潮福利片在线看| 一级黄片播放器| 狂野欧美激情性bbbbbb| 久久久久国产精品人妻一区二区| 性色av一级| 在线观看人妻少妇| 高清视频免费观看一区二区| 午夜福利在线免费观看网站| 亚洲精品自拍成人| 国产成人一区二区三区免费视频网站 | 欧美日韩精品网址| 亚洲欧美日韩另类电影网站| 在线亚洲精品国产二区图片欧美| 欧美精品高潮呻吟av久久| 在线观看免费视频网站a站| 国产午夜精品一二区理论片| 视频区欧美日本亚洲| 亚洲国产精品一区二区三区在线| 国产亚洲精品久久久久5区| 性色av乱码一区二区三区2| 国产精品成人在线| 99久久精品国产亚洲精品| 男女高潮啪啪啪动态图| 国产精品 欧美亚洲| 婷婷色综合www| 激情视频va一区二区三区| 丰满饥渴人妻一区二区三| av线在线观看网站| 亚洲成av片中文字幕在线观看| 99国产综合亚洲精品| 十八禁人妻一区二区| 又大又黄又爽视频免费| 欧美精品av麻豆av| av不卡在线播放| 欧美精品亚洲一区二区| 亚洲成人免费电影在线观看 | 永久免费av网站大全| 波多野结衣一区麻豆| 啦啦啦在线观看免费高清www| 一区二区三区四区激情视频| 一级毛片我不卡| 欧美亚洲日本最大视频资源| 中国国产av一级| 91精品国产国语对白视频| 不卡av一区二区三区| 天堂俺去俺来也www色官网| 久久国产精品男人的天堂亚洲| 午夜福利乱码中文字幕| 日韩熟女老妇一区二区性免费视频| av有码第一页| 国产免费现黄频在线看| 久久天躁狠狠躁夜夜2o2o | 久久九九热精品免费| 操出白浆在线播放| 国产高清videossex| 我要看黄色一级片免费的| 亚洲欧美一区二区三区久久| 又紧又爽又黄一区二区| 青春草视频在线免费观看| 精品国产乱码久久久久久男人| 日本色播在线视频| 亚洲情色 制服丝袜| 久久久久网色| 国产精品久久久久成人av| 老司机亚洲免费影院| 亚洲伊人色综图| 色94色欧美一区二区| 操出白浆在线播放| 亚洲 欧美一区二区三区| 亚洲欧美激情在线| av视频免费观看在线观看| 日韩人妻精品一区2区三区| 午夜久久久在线观看| av不卡在线播放| 十八禁高潮呻吟视频| 看免费成人av毛片| 免费高清在线观看视频在线观看| 一级毛片电影观看| 曰老女人黄片| 国产主播在线观看一区二区 | 色婷婷av一区二区三区视频| 亚洲av电影在线观看一区二区三区| 制服人妻中文乱码| 国产精品熟女久久久久浪| 精品人妻一区二区三区麻豆| 亚洲成色77777| 最黄视频免费看| 国产高清国产精品国产三级| 亚洲国产欧美网| 一二三四在线观看免费中文在| videos熟女内射| 1024香蕉在线观看| 色精品久久人妻99蜜桃| 日本vs欧美在线观看视频| 亚洲情色 制服丝袜| 婷婷成人精品国产| 91精品三级在线观看| 中国美女看黄片| 最黄视频免费看| 久久99热这里只频精品6学生| 欧美成人精品欧美一级黄| 久久毛片免费看一区二区三区| 国产成人精品无人区| 精品久久蜜臀av无| 国产精品久久久久久精品电影小说| 免费少妇av软件| 国产欧美日韩精品亚洲av| 亚洲国产欧美一区二区综合| 可以免费在线观看a视频的电影网站| 咕卡用的链子| 人人妻,人人澡人人爽秒播 | 亚洲欧美一区二区三区黑人| 日韩一卡2卡3卡4卡2021年| 成人午夜精彩视频在线观看| 久久精品国产亚洲av高清一级| 黑人猛操日本美女一级片| 少妇粗大呻吟视频| 99国产综合亚洲精品| 成人国语在线视频| 国产精品99久久99久久久不卡| 午夜免费男女啪啪视频观看| 欧美成狂野欧美在线观看| 中文字幕av电影在线播放| 国产日韩欧美视频二区| 丰满少妇做爰视频| 精品第一国产精品| 又紧又爽又黄一区二区| 久久av网站| 国产女主播在线喷水免费视频网站| 嫁个100分男人电影在线观看 | 夜夜骑夜夜射夜夜干| av天堂在线播放| 国产在线免费精品| 精品熟女少妇八av免费久了| 免费在线观看日本一区| 晚上一个人看的免费电影| 90打野战视频偷拍视频| 国产成人免费观看mmmm| 亚洲一区中文字幕在线| h视频一区二区三区| 久久99精品国语久久久| 精品一区二区三区av网在线观看 | 在线 av 中文字幕| 国产在线观看jvid| 久久鲁丝午夜福利片| 亚洲色图 男人天堂 中文字幕| 自拍欧美九色日韩亚洲蝌蚪91| 久久久久网色| 久久国产精品男人的天堂亚洲| 欧美在线一区亚洲| 国产高清国产精品国产三级| 国产一级毛片在线| 亚洲av电影在线进入| 少妇的丰满在线观看| 国产老妇伦熟女老妇高清| 久久亚洲精品不卡| 嫁个100分男人电影在线观看 | 国产片特级美女逼逼视频| 亚洲国产最新在线播放| 青春草视频在线免费观看| 亚洲av国产av综合av卡| 国产人伦9x9x在线观看| 日韩中文字幕欧美一区二区 | 国产一区二区三区综合在线观看| 波多野结衣一区麻豆| 欧美乱码精品一区二区三区| 高清视频免费观看一区二区| 国产极品粉嫩免费观看在线| 9191精品国产免费久久| 亚洲国产看品久久| 两性夫妻黄色片| 91九色精品人成在线观看| 巨乳人妻的诱惑在线观看| 国产精品偷伦视频观看了| 免费一级毛片在线播放高清视频 | 午夜免费男女啪啪视频观看| 男人操女人黄网站| 天天躁日日躁夜夜躁夜夜| 久热这里只有精品99| 日本午夜av视频| 婷婷色综合www| 国产欧美日韩一区二区三 | 久久久精品免费免费高清| 亚洲av欧美aⅴ国产| 两个人看的免费小视频| 亚洲国产成人一精品久久久| 老司机影院毛片| 777米奇影视久久| 又紧又爽又黄一区二区| 欧美黄色片欧美黄色片| 免费观看a级毛片全部| 国产一区二区 视频在线| 18禁观看日本| 一级毛片黄色毛片免费观看视频| 亚洲综合色网址| 久久久久国产精品人妻一区二区| 欧美日本中文国产一区发布| 嫁个100分男人电影在线观看 | h视频一区二区三区| 男人操女人黄网站| 一本大道久久a久久精品| kizo精华| 日韩av不卡免费在线播放| av一本久久久久| 人人妻,人人澡人人爽秒播 | 亚洲美女黄色视频免费看| 中文字幕av电影在线播放| 国产在线一区二区三区精| 男的添女的下面高潮视频| 久久影院123| av天堂在线播放| 久久免费观看电影| 亚洲精品av麻豆狂野| 亚洲成人免费av在线播放| 永久免费av网站大全| 人人妻人人添人人爽欧美一区卜| 国产片特级美女逼逼视频| 亚洲成人国产一区在线观看 | 又黄又粗又硬又大视频| 亚洲精品一区蜜桃| 国产免费福利视频在线观看| 精品第一国产精品| 午夜免费观看性视频| 国产97色在线日韩免费| 亚洲专区中文字幕在线| 日本av免费视频播放| 老司机在亚洲福利影院| 亚洲av日韩精品久久久久久密 | 国产无遮挡羞羞视频在线观看| av网站免费在线观看视频| 一本久久精品| 亚洲av日韩精品久久久久久密 | 国产爽快片一区二区三区| 91国产中文字幕| 久久人人爽人人片av| cao死你这个sao货| 久久精品久久精品一区二区三区| 久久人人97超碰香蕉20202| 人人妻,人人澡人人爽秒播 | 美女脱内裤让男人舔精品视频| 亚洲国产中文字幕在线视频| 999久久久国产精品视频| 国产女主播在线喷水免费视频网站| 中国国产av一级| 欧美日韩亚洲高清精品| 国产成人精品无人区| 精品少妇久久久久久888优播| 巨乳人妻的诱惑在线观看| 亚洲一区二区三区欧美精品| 亚洲成人手机| 十八禁高潮呻吟视频| 日韩av不卡免费在线播放| 国产成人精品久久二区二区免费| 80岁老熟妇乱子伦牲交| 性少妇av在线| 亚洲午夜精品一区,二区,三区| 国产一区二区三区综合在线观看| 99久久精品国产亚洲精品| 秋霞在线观看毛片| 国产精品一区二区在线观看99| 免费高清在线观看日韩| 如日韩欧美国产精品一区二区三区| 99九九在线精品视频| 男女床上黄色一级片免费看| 日韩大片免费观看网站| 欧美日韩精品网址| 成在线人永久免费视频| 精品一区二区三区av网在线观看 | av国产精品久久久久影院| avwww免费| 日韩大片免费观看网站| 欧美 日韩 精品 国产| 日韩av在线免费看完整版不卡| 91精品伊人久久大香线蕉| 精品第一国产精品| 黄色 视频免费看| 中文字幕人妻丝袜制服| 精品免费久久久久久久清纯 | 亚洲精品日本国产第一区| 国产三级黄色录像| 欧美大码av| 97在线人人人人妻| 十八禁人妻一区二区| 99国产精品一区二区三区| 老汉色av国产亚洲站长工具| 美女扒开内裤让男人捅视频| 亚洲伊人色综图| 欧美亚洲 丝袜 人妻 在线| 亚洲欧美一区二区三区久久| 99国产精品免费福利视频| 日韩av免费高清视频| 在线亚洲精品国产二区图片欧美| 美女大奶头黄色视频| 一区二区三区乱码不卡18| 18禁国产床啪视频网站| 国产精品人妻久久久影院| 久久久精品区二区三区| 国产女主播在线喷水免费视频网站| 少妇猛男粗大的猛烈进出视频| 国产精品国产av在线观看| 亚洲精品乱久久久久久| 欧美+亚洲+日韩+国产| 91国产中文字幕| 777久久人妻少妇嫩草av网站| 亚洲av电影在线进入| 精品第一国产精品| 国产淫语在线视频| 日本一区二区免费在线视频| 精品少妇一区二区三区视频日本电影| 19禁男女啪啪无遮挡网站| 久久ye,这里只有精品| 亚洲欧美色中文字幕在线| 欧美日韩福利视频一区二区| 九色亚洲精品在线播放| 成年美女黄网站色视频大全免费| 啦啦啦在线免费观看视频4| 国产一卡二卡三卡精品| 另类精品久久| 大片电影免费在线观看免费| av线在线观看网站| 最新在线观看一区二区三区 | 高清视频免费观看一区二区| 天天躁日日躁夜夜躁夜夜| 欧美激情高清一区二区三区| 亚洲精品第二区| 视频区图区小说| 两个人免费观看高清视频| 亚洲精品av麻豆狂野| 欧美在线一区亚洲| 18禁观看日本| 国产精品免费大片| 国产免费现黄频在线看| 亚洲精品一卡2卡三卡4卡5卡 | 国产亚洲欧美精品永久| 国产一区二区三区综合在线观看| 久久精品亚洲熟妇少妇任你| 亚洲熟女精品中文字幕| 亚洲国产看品久久| 91精品国产国语对白视频| 亚洲国产欧美一区二区综合| av片东京热男人的天堂| 91麻豆精品激情在线观看国产 | 女人高潮潮喷娇喘18禁视频| 伦理电影免费视频| 大陆偷拍与自拍| 丰满饥渴人妻一区二区三| 爱豆传媒免费全集在线观看| 欧美日本中文国产一区发布| 黄色视频在线播放观看不卡| 一区二区av电影网| 亚洲精品一二三| 最近手机中文字幕大全| 午夜av观看不卡| 久久狼人影院| 丝袜美足系列| 91国产中文字幕| 波多野结衣av一区二区av| 校园人妻丝袜中文字幕| 亚洲av欧美aⅴ国产| av线在线观看网站| 欧美久久黑人一区二区| 国产亚洲精品久久久久5区| 美女视频免费永久观看网站| 一级片'在线观看视频| 女性生殖器流出的白浆| 一边摸一边做爽爽视频免费| 狂野欧美激情性xxxx| 老汉色av国产亚洲站长工具| 午夜激情av网站| 操美女的视频在线观看| 99国产精品免费福利视频| 亚洲一区中文字幕在线| 久久精品久久久久久噜噜老黄| 国产午夜精品一二区理论片| 一本久久精品| 欧美人与性动交α欧美精品济南到| 国产免费又黄又爽又色| 免费一级毛片在线播放高清视频 | 99国产精品一区二区蜜桃av | 亚洲欧洲日产国产| 免费高清在线观看日韩| 久久久久久免费高清国产稀缺| 午夜激情久久久久久久| 亚洲成av片中文字幕在线观看| 美女国产高潮福利片在线看| 欧美日韩一级在线毛片| 久久亚洲精品不卡| 女人爽到高潮嗷嗷叫在线视频| 国产黄频视频在线观看| 男人添女人高潮全过程视频| 亚洲av片天天在线观看| 欧美成狂野欧美在线观看| av欧美777| 色播在线永久视频| 日本av免费视频播放| 欧美在线黄色| 99久久99久久久精品蜜桃| 久久免费观看电影| 天天躁狠狠躁夜夜躁狠狠躁| 日日夜夜操网爽| 亚洲精品久久久久久婷婷小说| 亚洲国产精品国产精品| 国产精品一区二区免费欧美 |