• <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)
    videosex国产| 成人亚洲精品一区在线观看| videossex国产| 欧美日韩精品成人综合77777| 最新中文字幕久久久久| 哪个播放器可以免费观看大片| 一级爰片在线观看| 亚洲国产色片| videossex国产| 亚洲欧美日韩卡通动漫| 最新中文字幕久久久久| 成人手机av| 两个人免费观看高清视频| 男人添女人高潮全过程视频| 国产色爽女视频免费观看| 97精品久久久久久久久久精品| av天堂久久9| 免费av中文字幕在线| 1024视频免费在线观看| 熟女电影av网| 午夜免费男女啪啪视频观看| 免费在线观看完整版高清| 精品视频人人做人人爽| 国产色婷婷99| 极品少妇高潮喷水抽搐| 中文字幕免费在线视频6| 欧美成人精品欧美一级黄| 久久久精品区二区三区| 99热全是精品| 韩国av在线不卡| 亚洲欧美日韩另类电影网站| 曰老女人黄片| 在现免费观看毛片| 高清欧美精品videossex| 啦啦啦视频在线资源免费观看| 最近中文字幕高清免费大全6| 亚洲国产精品一区三区| 2018国产大陆天天弄谢| 国产国拍精品亚洲av在线观看| 菩萨蛮人人尽说江南好唐韦庄| 国产国语露脸激情在线看| 国产精品秋霞免费鲁丝片| 少妇人妻久久综合中文| 最近最新中文字幕免费大全7| 国产精品人妻久久久影院| 亚洲精品乱久久久久久| 日韩大片免费观看网站| 久久久久久伊人网av| 我的女老师完整版在线观看| 精品国产一区二区久久| 美女国产视频在线观看| 少妇人妻 视频| 免费在线观看黄色视频的| 少妇被粗大猛烈的视频| 少妇人妻 视频| 久久久久视频综合| 亚洲精品乱久久久久久| 啦啦啦在线观看免费高清www| 国产高清国产精品国产三级| 美女xxoo啪啪120秒动态图| xxxhd国产人妻xxx| 亚洲婷婷狠狠爱综合网| 99久久精品国产国产毛片| 国内精品宾馆在线| 99热6这里只有精品| 999精品在线视频| 国产深夜福利视频在线观看| 97在线人人人人妻| 一级爰片在线观看| 欧美老熟妇乱子伦牲交| 人妻一区二区av| 五月开心婷婷网| 九九在线视频观看精品| 亚洲av国产av综合av卡| 国产一区二区三区av在线| 一区二区av电影网| √禁漫天堂资源中文www| 欧美性感艳星| 人妻人人澡人人爽人人| 少妇 在线观看| 成人二区视频| 天天躁夜夜躁狠狠躁躁| 又黄又爽又刺激的免费视频.| 久久精品aⅴ一区二区三区四区 | 久久精品国产自在天天线| 极品人妻少妇av视频| 亚洲内射少妇av| 日本黄色日本黄色录像| 欧美激情极品国产一区二区三区 | 亚洲精品av麻豆狂野| 国产免费一区二区三区四区乱码| 亚洲av免费高清在线观看| 侵犯人妻中文字幕一二三四区| 久热久热在线精品观看| 九九爱精品视频在线观看| 新久久久久国产一级毛片| 久久婷婷青草| 国产精品不卡视频一区二区| 在线天堂中文资源库| 精品国产露脸久久av麻豆| 免费观看av网站的网址| 91aial.com中文字幕在线观看| av免费在线看不卡| 亚洲国产欧美在线一区| 夫妻午夜视频| 国产成人免费无遮挡视频| 亚洲国产精品成人久久小说| 国产精品久久久久久精品古装| 免费黄网站久久成人精品| 两个人免费观看高清视频| 亚洲中文av在线| 亚洲欧美一区二区三区黑人 | 亚洲欧美一区二区三区黑人 | 日韩一本色道免费dvd| 亚洲美女黄色视频免费看| 美女国产视频在线观看| 久久久精品94久久精品| 亚洲,一卡二卡三卡| 99九九在线精品视频| 老司机影院成人| 婷婷色av中文字幕| 免费黄频网站在线观看国产| 免费看不卡的av| 久久鲁丝午夜福利片| 你懂的网址亚洲精品在线观看| 国产永久视频网站| av福利片在线| 国产成人精品婷婷| xxxhd国产人妻xxx| 下体分泌物呈黄色| 婷婷成人精品国产| 在线观看一区二区三区激情| av视频免费观看在线观看| 精品酒店卫生间| 亚洲av欧美aⅴ国产| 亚洲精品,欧美精品| 亚洲美女视频黄频| 国产亚洲午夜精品一区二区久久| 精品少妇久久久久久888优播| 人妻人人澡人人爽人人| 另类精品久久| 日韩一区二区视频免费看| 日韩成人伦理影院| 狠狠婷婷综合久久久久久88av| 日本av免费视频播放| av又黄又爽大尺度在线免费看| 久久精品久久精品一区二区三区| 最近手机中文字幕大全| 少妇人妻精品综合一区二区| 97在线人人人人妻| 人妻 亚洲 视频| 久久精品人人爽人人爽视色| 国产免费一级a男人的天堂| 99香蕉大伊视频| 中国三级夫妇交换| 久久影院123| 日韩欧美精品免费久久| 亚洲av综合色区一区| 国产色婷婷99| 国产白丝娇喘喷水9色精品| 这个男人来自地球电影免费观看 | 亚洲第一av免费看| 亚洲中文av在线| a级毛片在线看网站| 精品国产一区二区久久| 中国国产av一级| 国产片特级美女逼逼视频| 亚洲国产精品国产精品| 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 午夜91福利影院| 久久人人爽人人片av| 久久久久久久国产电影| 另类亚洲欧美激情| 精品国产露脸久久av麻豆| 欧美日韩视频精品一区| av免费在线看不卡| 最近中文字幕高清免费大全6| 亚洲欧美中文字幕日韩二区| 内地一区二区视频在线| 97超碰精品成人国产| 成年美女黄网站色视频大全免费| 日韩不卡一区二区三区视频在线| 亚洲国产欧美在线一区| 一区二区三区四区激情视频| 国产片特级美女逼逼视频| 丝瓜视频免费看黄片| 久久亚洲国产成人精品v| 纵有疾风起免费观看全集完整版| 又大又黄又爽视频免费| www.熟女人妻精品国产 | 亚洲中文av在线| 久久99一区二区三区| 黄片无遮挡物在线观看| 黄网站色视频无遮挡免费观看| 婷婷成人精品国产| 久久精品熟女亚洲av麻豆精品| 人体艺术视频欧美日本| 美女主播在线视频| 国产视频首页在线观看| 欧美 亚洲 国产 日韩一| 内地一区二区视频在线| 亚洲精品美女久久久久99蜜臀 | 91午夜精品亚洲一区二区三区| 桃花免费在线播放| 校园人妻丝袜中文字幕| 最近2019中文字幕mv第一页| 精品一品国产午夜福利视频| 最近最新中文字幕大全免费视频 | 免费观看在线日韩| 亚洲欧美成人综合另类久久久| 男女国产视频网站| 大香蕉97超碰在线| 乱人伦中国视频| 欧美+日韩+精品| 久久免费观看电影| 成人国产av品久久久| av女优亚洲男人天堂| 纯流量卡能插随身wifi吗| 80岁老熟妇乱子伦牲交| 国产有黄有色有爽视频| 少妇人妻 视频| 天美传媒精品一区二区| 亚洲欧美一区二区三区国产| 日韩视频在线欧美| 99视频精品全部免费 在线| 久久精品国产自在天天线| 在线观看国产h片| 国产精品久久久久久精品电影小说| 老女人水多毛片| videosex国产| 婷婷色综合大香蕉| 久久热在线av| 黄色视频在线播放观看不卡| 国产xxxxx性猛交| 午夜视频国产福利| 热re99久久国产66热| 久久久a久久爽久久v久久| 亚洲国产精品一区二区三区在线| 两个人看的免费小视频| 欧美日韩精品成人综合77777| 2018国产大陆天天弄谢| 男男h啪啪无遮挡| 高清毛片免费看| 久久久久国产网址| 免费观看a级毛片全部| 在线观看国产h片| 欧美xxxx性猛交bbbb| 久久久精品免费免费高清| 边亲边吃奶的免费视频| 亚洲精品乱久久久久久| 9191精品国产免费久久| 中文字幕亚洲精品专区| 日韩,欧美,国产一区二区三区| 丝袜人妻中文字幕| 91久久精品国产一区二区三区| 中文乱码字字幕精品一区二区三区| 久久狼人影院| 欧美日韩综合久久久久久| 国产国语露脸激情在线看| 青春草亚洲视频在线观看| 最近的中文字幕免费完整| 国产日韩欧美在线精品| 肉色欧美久久久久久久蜜桃| 99热网站在线观看| 嫩草影院入口| 内地一区二区视频在线| 成年人免费黄色播放视频| 亚洲色图 男人天堂 中文字幕 | 熟女人妻精品中文字幕| 国产色婷婷99| 亚洲国产精品一区二区三区在线| 各种免费的搞黄视频| 欧美 亚洲 国产 日韩一| 午夜福利视频在线观看免费| 女性生殖器流出的白浆| 久久精品久久久久久噜噜老黄| 国产av国产精品国产| 亚洲精品国产av蜜桃| 亚洲经典国产精华液单| 久久久久精品久久久久真实原创| 精品少妇内射三级| videos熟女内射| 永久免费av网站大全| 伦理电影免费视频| 麻豆乱淫一区二区| 国产精品国产av在线观看| 亚洲精品自拍成人| 多毛熟女@视频| 在线免费观看不下载黄p国产| 尾随美女入室| 99香蕉大伊视频| 9191精品国产免费久久| 97在线人人人人妻| 九草在线视频观看| 精品久久久久久电影网| 嫩草影院入口| 乱人伦中国视频| 日本-黄色视频高清免费观看| 少妇的丰满在线观看| videossex国产| 涩涩av久久男人的天堂| 久久女婷五月综合色啪小说| 国产麻豆69| 成年人午夜在线观看视频| 久久精品熟女亚洲av麻豆精品| 精品酒店卫生间| 少妇猛男粗大的猛烈进出视频| 超碰97精品在线观看| 国产精品.久久久| 亚洲av男天堂| 一区二区三区乱码不卡18| 亚洲国产精品国产精品| 亚洲第一区二区三区不卡| 亚洲精品乱久久久久久| 最近的中文字幕免费完整| 成年动漫av网址| 日韩人妻精品一区2区三区| av一本久久久久| 国产69精品久久久久777片| 久久久久国产网址| 亚洲欧美成人综合另类久久久| 午夜91福利影院| 国产xxxxx性猛交| 免费高清在线观看视频在线观看| 亚洲,一卡二卡三卡| 午夜影院在线不卡| 久久久久久久久久久久大奶| 久久ye,这里只有精品| 国产无遮挡羞羞视频在线观看| 国产白丝娇喘喷水9色精品| av片东京热男人的天堂| 女性被躁到高潮视频| 日韩成人伦理影院| 国产 一区精品| 好男人视频免费观看在线| 久久久久久久亚洲中文字幕| 亚洲av中文av极速乱| 人人妻人人添人人爽欧美一区卜| 亚洲国产成人一精品久久久| 熟女电影av网| 亚洲欧美成人综合另类久久久| 一区二区三区乱码不卡18| 日韩一区二区视频免费看| 日产精品乱码卡一卡2卡三| 亚洲色图综合在线观看| 十八禁高潮呻吟视频| 亚洲欧美一区二区三区黑人 | 菩萨蛮人人尽说江南好唐韦庄| 国产片特级美女逼逼视频| 亚洲精品一二三| 久久精品国产自在天天线| 亚洲四区av| 宅男免费午夜| 日韩不卡一区二区三区视频在线| 中文乱码字字幕精品一区二区三区| 宅男免费午夜| 菩萨蛮人人尽说江南好唐韦庄| 成年人午夜在线观看视频| 国产探花极品一区二区| 搡女人真爽免费视频火全软件| 2021少妇久久久久久久久久久| 热99久久久久精品小说推荐| 日本色播在线视频| 久久精品国产综合久久久 | 日韩大片免费观看网站| 国产精品久久久久久精品电影小说| 日韩成人伦理影院| 一区二区av电影网| 热99国产精品久久久久久7| 蜜桃在线观看..| 日本wwww免费看| 久久人人爽人人片av| 亚洲经典国产精华液单| 亚洲av福利一区| 超碰97精品在线观看| 日本黄大片高清| 国产成人av激情在线播放| 亚洲少妇的诱惑av| 日韩av不卡免费在线播放| av在线播放精品| 久久狼人影院| 五月伊人婷婷丁香| 中文字幕精品免费在线观看视频 | 777米奇影视久久| 国产精品一二三区在线看| 国产精品一区二区在线观看99| 男女边吃奶边做爰视频| 如何舔出高潮| 国产av码专区亚洲av| 夫妻午夜视频| 999精品在线视频| 免费观看在线日韩| 欧美性感艳星| 男女午夜视频在线观看 | 男人爽女人下面视频在线观看| 欧美人与善性xxx| 色婷婷av一区二区三区视频| 欧美人与性动交α欧美软件 | 国产国拍精品亚洲av在线观看| 中文字幕制服av| 边亲边吃奶的免费视频| 久久97久久精品| 男人添女人高潮全过程视频| 在线观看免费日韩欧美大片| 性色avwww在线观看| 高清视频免费观看一区二区| 中国三级夫妇交换| 999精品在线视频| 午夜福利网站1000一区二区三区| 免费观看性生交大片5| 日韩电影二区| 欧美日韩精品成人综合77777| 最近手机中文字幕大全| 欧美老熟妇乱子伦牲交| 国产成人免费观看mmmm| 欧美3d第一页| 最近最新中文字幕大全免费视频 | 亚洲欧美一区二区三区国产| 黄色一级大片看看| 日韩av免费高清视频| 午夜精品国产一区二区电影| 成人毛片60女人毛片免费| 91在线精品国自产拍蜜月| 夜夜爽夜夜爽视频| 日本午夜av视频| 国产黄色视频一区二区在线观看| 国产男女超爽视频在线观看| 国产视频首页在线观看| 欧美精品高潮呻吟av久久| 国产 一区精品| 水蜜桃什么品种好| 免费高清在线观看日韩| 国产成人av激情在线播放| 亚洲国产看品久久| 搡女人真爽免费视频火全软件| 97精品久久久久久久久久精品| 大陆偷拍与自拍| 日本爱情动作片www.在线观看| 久久久精品免费免费高清| 一本色道久久久久久精品综合| 在线观看www视频免费| 成人毛片60女人毛片免费| 国产精品久久久久久av不卡| 熟女av电影| 777米奇影视久久| 伊人久久国产一区二区| 如日韩欧美国产精品一区二区三区| 老司机影院成人| 成人免费观看视频高清| 一级a做视频免费观看| 精品亚洲成国产av| 国产精品蜜桃在线观看| 国产免费一级a男人的天堂| 看免费av毛片| 日韩电影二区| 色婷婷av一区二区三区视频| 99热这里只有是精品在线观看| 成人毛片60女人毛片免费| 久久午夜福利片| 一本大道久久a久久精品| 久久狼人影院| 国产精品人妻久久久影院| 人妻系列 视频| 亚洲欧美一区二区三区黑人 | 男男h啪啪无遮挡| 国产成人一区二区在线| 日本猛色少妇xxxxx猛交久久| 亚洲av在线观看美女高潮| 只有这里有精品99| 欧美精品亚洲一区二区| 日本免费在线观看一区| 一二三四中文在线观看免费高清| 日韩在线高清观看一区二区三区| 久久久久视频综合| 亚洲少妇的诱惑av| 五月伊人婷婷丁香| 亚洲精品成人av观看孕妇| 满18在线观看网站| 欧美日韩国产mv在线观看视频| 免费看光身美女| 在线观看国产h片| 少妇被粗大的猛进出69影院 | 午夜91福利影院| av有码第一页| 久久99热这里只频精品6学生| 精品人妻在线不人妻| 久久久久视频综合| 亚洲av在线观看美女高潮| 国产 一区精品| 麻豆精品久久久久久蜜桃| 91午夜精品亚洲一区二区三区| www日本在线高清视频| 精品国产一区二区三区久久久樱花| 91精品国产国语对白视频| 久久久久久久久久成人| 丰满乱子伦码专区| 亚洲国产看品久久| 一本—道久久a久久精品蜜桃钙片| 97在线人人人人妻| 国产一区二区在线观看日韩| 亚洲成人一二三区av| 国产精品国产三级专区第一集| 国产精品99久久99久久久不卡 | 99热这里只有是精品在线观看| 男女啪啪激烈高潮av片| a 毛片基地| 在线看a的网站| 欧美 亚洲 国产 日韩一| 九九在线视频观看精品| 久久午夜福利片| 成人亚洲精品一区在线观看| 日日爽夜夜爽网站| 不卡视频在线观看欧美| 亚洲欧洲精品一区二区精品久久久 | 久久人人97超碰香蕉20202| 只有这里有精品99| 免费黄色在线免费观看| 精品福利永久在线观看| 国产老妇伦熟女老妇高清| 亚洲国产精品一区二区三区在线| 我要看黄色一级片免费的| 看十八女毛片水多多多| 久久97久久精品| 免费大片黄手机在线观看| av国产精品久久久久影院| 亚洲,欧美精品.| 欧美精品av麻豆av| av视频免费观看在线观看| 国产亚洲最大av| 熟女av电影| 中国国产av一级| a级片在线免费高清观看视频| 国产亚洲午夜精品一区二区久久| 男人添女人高潮全过程视频| 国产男人的电影天堂91| 国产高清三级在线| 少妇的丰满在线观看| 久久久久久久亚洲中文字幕| 国产欧美另类精品又又久久亚洲欧美| 国产亚洲av片在线观看秒播厂| 日日撸夜夜添| 伊人久久国产一区二区| 国产麻豆69| 黑人巨大精品欧美一区二区蜜桃 | 狠狠精品人妻久久久久久综合| 日本色播在线视频| 18禁动态无遮挡网站| 亚洲欧洲国产日韩| 日韩制服丝袜自拍偷拍| 亚洲伊人久久精品综合| 丁香六月天网| 色吧在线观看| 少妇精品久久久久久久| 日日撸夜夜添| 国产成人精品一,二区| 亚洲精品色激情综合| 青春草视频在线免费观看| 色哟哟·www| 少妇被粗大的猛进出69影院 | 国产日韩欧美视频二区| 亚洲精品视频女| 少妇人妻精品综合一区二区| 母亲3免费完整高清在线观看 | 狂野欧美激情性xxxx在线观看| 蜜桃在线观看..| 久久人人爽av亚洲精品天堂| 人妻一区二区av| 校园人妻丝袜中文字幕| 看免费成人av毛片| 久久韩国三级中文字幕| 夫妻性生交免费视频一级片| videossex国产| 熟女电影av网| 国产老妇伦熟女老妇高清| 国产精品 国内视频| 一二三四在线观看免费中文在 | 夫妻午夜视频| 97超碰精品成人国产| 久久人人爽av亚洲精品天堂| 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 边亲边吃奶的免费视频| 欧美精品亚洲一区二区| 一区二区三区精品91| 久热久热在线精品观看| 亚洲欧洲国产日韩| 极品少妇高潮喷水抽搐| 国产成人精品婷婷| 久久这里有精品视频免费| 91久久精品国产一区二区三区| 免费在线观看完整版高清| 看免费av毛片| 90打野战视频偷拍视频| 一本大道久久a久久精品| 伊人亚洲综合成人网| 久久人人爽人人片av| 国产精品一国产av| 国产一级毛片在线| 精品久久久久久电影网| 在线观看一区二区三区激情| 欧美国产精品一级二级三级| 国产精品人妻久久久久久| 精品少妇久久久久久888优播| av有码第一页| 欧美日韩国产mv在线观看视频| av.在线天堂| 久久久久精品性色| 亚洲一区二区三区欧美精品| 黄色 视频免费看| 亚洲国产av新网站| 巨乳人妻的诱惑在线观看| 中国国产av一级| 精品熟女少妇av免费看| 老司机影院成人| 亚洲一区二区三区欧美精品| 中文字幕制服av|