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

在 Linux下調試內存泄漏的方法

運維 系統運維
該如何發現你C和C++內存存在問題呢?當運行速度比較慢的時候是怎么回事兒呢?此時,你該考慮的問題是內存泄露。本文闡明了如何發現內存泄露、分析和檢測內存泄露的全過程。

  由于內存泄漏不是顯而易見,而且存在內存錯誤的 C 和 C++ 程序會導致各種問題,所以需要特別關注 C 和 C++ 編程的內存問題,特別是內存泄漏。本文先從如何發現內存泄漏,然后是用不同的方法和工具定位內存泄漏,最后對這些工具進行了比較,另外還簡單介紹了資源泄漏的處理(以句柄泄漏為例)。本文使用的測試平臺是:Linux (Redhat AS4)。但是這些方法和工具許多都不只是局限于 C/C++ 語言以及 linux 操作系統。

  內存泄漏一般指的是堆內存的泄漏。堆內存是指程序從堆中分配的、大小任意的(內存塊的大小可以在程序運行期決定)、使用完后必須顯示的釋放的內存。應用程序一般使用malloc、realloc、new 等函數從堆中分配到一塊內存,使用完后,程序必須負責相應的調用 free 或 delete 釋放該內存塊。否則,這塊內存就不能被再次使用,我們就說這塊內存泄漏了。

1. 如何發現內存泄漏

  有些簡單的內存泄漏問題可以從在代碼的檢查階段確定。還有些泄漏比較嚴重的,即在很短的時間內導致程序或系統崩潰,或者系統報告沒有足夠內存,也比較容易發現。最困難的就是泄漏比較緩慢,需要觀測幾天、幾周甚至幾個月才能看到明顯異常現象。那么如何在比較短的時間內檢測出有沒有潛在的內存泄漏問題呢?實際上不同的系統都帶有內存監視工具,我們可以從監視工具收集一段時間內的堆棧內存信息,觀測增長趨勢,來確定是否有內存泄漏。在 Linux 平臺可以用 ps 命令,來監視內存的使用,比如下面的命令 (觀測指定進程的VSZ值):

  ps -aux

2. 靜態分析

  包括手動檢測和靜態工具分析,這是代價最小的調試方法。

(1)手動檢測

  當使用 C/C++ 進行開發時,采用良好的一致的編程規范是防止內存問題第一道也是最重要的措施。檢測是編碼標準的補充。二者各有裨益,但結合使用效果特別好。專業的 C 或 C++ 專業人員甚至可以瀏覽不熟悉的源代碼,并以極低的成本檢測內存問題。通過少量的實踐和適當的文本搜索,您能夠快速驗證平衡的 *alloc() 和 free() 或者 new 和 delete 的源主體。人工查看此類內容通常會出現像清單 1 中一樣的問題,可以定位出在函數 LeakTest 中的堆變量 Logmsg 沒有釋放。

  清單1. 簡單的內存泄漏

  1.   #include   
  2.  
  3.   #include   
  4.  
  5.   #include   
  6.  
  7.   int LeakTest(char * Para)  
  8.  
  9.   {  
  10.  
  11.   if(NULL==Para){  
  12.  
  13.   //local_log("LeakTest Func: empty parameter\n");  
  14.  
  15.   return -1;  
  16.  
  17.   }  
  18.  
  19.   char * Logmsg = new char[128];  
  20.  
  21.   if(NULL == Logmsg){  
  22.  
  23.   //local_log("memeory allocation failed\n");  
  24.  
  25.   return -2;  
  26.  
  27.   }  
  28.  
  29.   sprintf(Logmsg,"LeakTest routine exit: '%s'.\n", Para);  
  30.  
  31.   //local_log(Logmsg);  
  32.  
  33.   return 0;  
  34.  
  35.   }  
  36.  
  37.   int main(int argc,char **argv )  
  38.  
  39.   {  
  40.  
  41.   char szInit [] = "testcase1";  
  42.  
  43.   LeakTest(szInit);  
  44.  
  45.   return 0;  
  46.  
  47.   }  
  48.  

(2)靜態代碼分析工具

  代碼靜態掃描和分析的工具比較多,比如 splint, PC-LINT, BEAM 等。因為 BEAM 支持的平臺比較多,這以 BEAM 為例,做個簡單介紹,其它有類似的處理過程。

  BEAM 可以檢測四類問題: 沒有初始化的變量;廢棄的空指針;內存泄漏;冗余計算。而且支持的平臺比較多。

  BEAM 支持以下平臺:

  Linux x86 (glibc 2.2.4)

  Linux s390/s390x (glibc 2.3.3 or higher)

  Linux (PowerPC, USS) (glibc 2.3.2 or higher)

  AIX (4.3.2+)

  Window2000 以上

  清單2. 用作 Beam 分析的代碼

  1.   #include   
  2.  
  3.   #include   
  4.  
  5.   #include   
  6.  
  7.   int *p;  
  8.  
  9.   void  
  10.  
  11.   foo(int a)  
  12.  
  13.   {  
  14.  
  15.   int b, c;  
  16.  
  17.   b = 0;  
  18.  
  19.   if(!p)  
  20.  
  21.   c = 1;  
  22.  
  23.   if(c > a)  
  24.  
  25.   c += p[1];  
  26.  
  27.   }  
  28.  
  29.   int LeakTest(char * Para)  
  30.  
  31.   {  
  32.  
  33.   char * Logmsg = new char[128];  
  34.  
  35.   if((Para==NULL)||(Logmsg == NULL))  
  36.  
  37.   return -1;  
  38.  
  39.   sprintf(Logmsg,"LeakTest routine exit: '%s'.\n", Para);  
  40.  
  41.   return 0;  
  42.  
  43.   }  
  44.  
  45.   int main(int argc,char **argv )  
  46.  
  47.   {  
  48.  
  49.   char szInit [] = "testcase1";  
  50.  
  51.   LeakTest(szInit);  
  52.  
  53.   return 0;  
  54.  
  55.   }  
  56.  

  下面以 X86 Linux 為例,代碼如清單 2,具體的環境如下:

  OS: Red Hat Enterprise Linux AS release 4 (Nahant Update 2)

  GCC: gcc version 3.4.4

  BEAM: 3.4.2; https://w3.eda.ibm.com/beam/

  可以把 BEAM 看作一個 C/C++ 編譯器,按下面的命令進行編譯 (前面兩個命令是設置編譯器環境變量):

 

  1.   ./beam-3.4.2/bin/beam_configure --c gcc  
  2.  
  3.   ./beam-3.4.2/bin/beam_configure --cpp g++  
  4.  
  5.   ./beam-3.4.2/bin/beam_compile --beam::compiler=compiler_cpp_config.tcl -cpp code2.cpp  
  6.  

  從下面的編譯報告中,我們可以看到這段程序中有三個錯誤:”內存泄漏”;“變量未初始化”;“ 空指針操作”

  1.   "code2.cpp", line 10: warning: variable "b" was set but never used  
  2.  
  3.   int b, c;  
  4.  
  5.   ^  
  6.  
  7.   BEAM_VERSION=3.4.2  
  8.  
  9.   BEAM_ROOT=/home/hanzb/memdetect  
  10.  
  11.   BEAM_DIRECTORY_WRITE_INNOCENTS=  
  12.  
  13.   BEAM_DIRECTORY_WRITE_ERRORS=  
  14.  
  15.   -- ERROR23(heap_memory) /*memory leak*/ >>>ERROR23_LeakTest_7b00071dc5cbb458  
  16.  
  17.   "code2.cpp", line 24: memory leak  
  18.  
  19.   ONE POSSIBLE PATH LEADING TO THE ERROR:  
  20.  
  21.   "code2.cpp", line 22: allocating using `operator new[]' (this memory will not be freed)  
  22.  
  23.   "code2.cpp", line 22: assigning into `Logmsg'  
  24.  
  25.   "code2.cpp", line 24: deallocating `Logmsg' because exiting its scope  
  26.  
  27.   (losing last pointer to the memory)  
  28.  
  29.   -- ERROR1 /*uninitialized*/ >>>ERROR1_foo_60c7889b2b608  
  30.  
  31.   "code2.cpp", line 16: uninitialized `c'  
  32.  
  33.   ONE POSSIBLE PATH LEADING TO THE ERROR:  
  34.  
  35.   "code2.cpp", line 10: allocating `c'  
  36.  
  37.   "code2.cpp", line 13: the if-condition is false  
  38.  
  39.   "code2.cpp", line 16: getting the value of `c'  
  40.  
  41.   VALUES AT THE END OF THE PATH:  
  42.  
  43.   p != 0  
  44.  
  45.   -- ERROR2 /*operating on NULL*/ >>>ERROR2_foo_af57809a2b615  
  46.  
  47.   "code2.cpp", line 17: invalid operation involving NULL pointer  
  48.  
  49.   ONE POSSIBLE PATH LEADING TO THE ERROR:  
  50.  
  51.   "code2.cpp", line 13: the if-condition is true (used as evidence that error is possible)  
  52.  
  53.   "code2.cpp", line 16: the if-condition is true  
  54.  
  55.   "code2.cpp", line 17: invalid operation `[]' involving NULL pointer `p'  
  56.  
  57.   VALUES AT THE END OF THE PATH:  
  58.  
  59.   c = 1 
  60.  
  61.   p = 0 
  62.  
  63.   a <= 0  
  64.  

#p#

(3) 內嵌程序

  可以重載內存分配和釋放函數 new 和 delete,然后編寫程序定期統計內存的分配和釋放,從中找出可能的內存泄漏。或者調用系統函數定期監視程序堆的大小,關鍵要確定堆的增長是泄漏而不是合理的內存使用。這類方法比較復雜,在這就不給出詳細例子了。

3. 動態運行檢測

  實時檢測工具主要有 valgrind, Rational purify 等。

(1) Valgrind

  valgrind 是幫助程序員尋找程序里的 bug 和改進程序性能的工具。程序通過 valgrind 運行時,valgrind 收集各種有用的信息,通過這些信息可以找到程序中潛在的 bug 和性能瓶頸。

  Valgrind 現在提供多個工具,其中最重要的是 Memcheck,Cachegrind,Massif 和 Callgrind。Valgrind 是在 Linux 系統下開發應用程序時用于調試內存問題的工具。它尤其擅長發現內存管理的問題,它可以檢查程序運行時的內存泄漏問題。其中的 memecheck 工具可以用來尋找 c、c++ 程序中內存管理的錯誤。可以檢查出下列幾種內存操作上的錯誤:

  讀寫已經釋放的內存

  讀寫內存塊越界(從前或者從后)

  使用還未初始化的變量

  將無意義的參數傳遞給系統調用

  內存泄漏

(2) Rational purify

  Rational Purify 主要針對軟件開發過程中難于發現的內存錯誤、運行時錯誤。在軟件開發過程中自動地發現錯誤,準確地定位錯誤,提供完備的錯誤信息,從而減少了調試時間。同時也是市場上唯一支持多種平臺的類似工具,并且可以和很多主流開發工具集成。Purify 可以檢查應用的每一個模塊,甚至可以查出復雜的多線程或進程應用中的錯誤。另外不僅可以檢查 C/C++,還可以對 Java 或 .NET 中的內存泄漏問題給出報告。

  在 Linux 系統中,使用 Purify 需要重新編譯程序。通常的做法是修改 Makefile 中的編譯器變量。下面是用來編譯本文中程序的 Makefile:

  CC=purify gcc

  首先運行 Purify 安裝目錄下的 purifyplus_setup.sh 來設置環境變量,然后運行 make 重新編譯程序。

  ./purifyplus_setup.sh

  下面給出編譯一個代碼文件的示例,源代碼文件命名為 test3.cpp. 用 purify 和 g++ 的編譯命令如下,‘-g’是編譯時加上調試信息。

  purify g++ -g test3.cpp –o test

  運行編譯生成的可執行文件 test,就可以得到圖1,可以定位出內存泄漏的具體位置。

  ./test

  清單3. Purify 分析的代碼

  1.   #include   
  2.  
  3.   char * Logmsg;  
  4.  
  5.   int LeakTest(char * Para)  
  6.  
  7.   {  
  8.  
  9.   if(NULL==Para){  
  10.  
  11.   //local_log("LeakTest Func: empty parameter\n");  
  12.  
  13.   return -1;  
  14.  
  15.   }  
  16.  
  17.   Logmsg = new char[128];  
  18.  
  19.   for (int i = 0 ; i < 128; i++)  
  20.  
  21.   Logmsg[i] = i%64;  
  22.  
  23.   if(NULL == Logmsg){  
  24.  
  25.   //local_log("memeory allocation failed\n");  
  26.  
  27.   return -2;  
  28.  
  29.   }  
  30.  
  31.   sprintf(Logmsg,"LeakTest routine exit: '%s'.\n", Para);  
  32.  
  33.   //local_log(Logmsg);  
  34.  
  35.   return 0;  
  36.  
  37.   }  
  38.  
  39.   int main(int argc,char **argv )  
  40.  
  41.   {  
  42.  
  43.   char szInit [] = "testcase1";  
  44.  
  45.   int i;  
  46.  
  47.   LeakTest(szInit);  
  48.  
  49.   for (i=0; i < 2; i++){  
  50.  
  51.   if(i%200 == 0)  
  52.  
  53.   LeakTest(szInit);  
  54.  
  55.   sleep(1);  
  56.  
  57.   }  
  58.  
  59.   return 0;  
  60.  
  61.   } 

  需要指出的是,程序必須編譯成調試版本才可以定位到具體哪行代碼發生了內存泄漏。即在 gcc 或者 g++ 中,必須使用 "-g" 選項。

  圖 1 purify 的輸出結果

 

Linux/內存泄露 

        以上就是幾種內存泄露,以及調試方法。對程序內存泄露的問題有著一定的幫助。

【編輯推薦】

  1. 在iPhone應用中如何避免內存泄露
  2. Linux 內存監控內存泄露和回收內存的方法
  3. Windows 7被曝內存泄露缺陷 可導致系統崩潰
  4. Linux kernel多個內存泄露本地拒絕服務漏洞
  5. Linux Kernel 2.4 RTC處理函數內存泄露漏洞
  6. Linux內核本地整數溢出和內存泄露漏洞

 

責任編輯:zhaolei 來源: 網絡轉載
相關推薦

2021-11-05 08:28:27

內存泄漏調試

2010-08-18 16:18:59

IE6CSS

2011-04-19 13:07:27

LinuxC語言

2018-12-07 10:52:08

內存泄漏方法

2010-09-25 11:07:45

Java內存泄漏

2025-08-04 01:00:00

JavaScript內存泄漏前端

2024-01-30 10:12:00

Java內存泄漏

2018-02-01 17:32:30

LinuxUNIXBash Shell

2021-04-20 09:52:43

Linuxcore dump代碼

2018-09-14 10:48:45

Java內存泄漏

2015-03-30 11:18:50

內存管理Android

2019-01-30 18:24:14

Java內存泄漏編程語言

2022-10-31 15:34:30

python裝飾器內存泄漏

2021-11-08 12:44:48

AndroidC++內存

2011-09-07 14:31:59

ubuntu屏幕亮度

2009-06-16 11:17:49

內存泄漏

2024-03-11 08:22:40

Java內存泄漏

2023-12-18 10:45:23

內存泄漏計算機服務器

2012-06-19 15:12:20

Java內存泄露

2024-02-21 08:00:55

WindowsDWM進程
點贊
收藏

51CTO技術棧公眾號

国产精品久久国产三级国电话系列| 亚洲欧美国产日韩天堂区| 久久精品国产精品亚洲精品色| 国产精品毛片一区二区在线看舒淇 | 亚洲一区二区中文在线| 精品久久久久久乱码天堂| 无码人妻精品中文字幕| 日本一区二区三区视频在线看| 综合久久综合久久| 国产精品久久久久久久app| 亚洲女人毛茸茸高潮| 国产精品日韩精品在线播放 | 日韩经典中文字幕一区| 日韩三级影视基地| 成年人看片网站| 亚洲国产成人二区| 18欧美乱大交hd1984| 91久久大香伊蕉在人线| 国产精品久久久久久99| 久久人人99| 亚洲成人av片在线观看| 黄色国产小视频| 中国av在线播放| 91丝袜国产在线播放| 国产精品永久免费在线| 久久综合色综合| 精品国产91| 欧美不卡123| 天天干天天干天天干天天干天天干| av激情在线观看| 大型av综合网站| 欧美综合久久久| 国产av熟女一区二区三区| 国产在线网站| 成人激情av网| 成人精品福利视频| 天天做天天爱夜夜爽| 91精品国偷自产在线电影| 亚洲第一页中文字幕| 超碰超碰在线观看| 神马久久午夜| 亚洲一二三级电影| 在线观看日韩片| 国产午夜精品一区理论片| 成人一区二区三区| 日本精品性网站在线观看| 搜索黄色一级片| 亚洲免费福利一区| 日韩一区二区三区观看| 东京热加勒比无码少妇| 123区在线| 中文字幕乱码久久午夜不卡| 久久香蕉综合色| 懂色av一区二区三区四区| 美女视频一区二区三区| 日本国产欧美一区二区三区| 国产无遮挡又黄又爽又色| 亚洲乱码电影| 日韩视频在线观看免费| 日本成人免费视频| 免费av一区| 日韩精品高清在线| 亚洲精品乱码久久| 97人人澡人人爽91综合色| 欧美一区二区网站| 亚洲精品mv在线观看| 国产精品第一国产精品| 欧美亚洲国产怡红院影院| 男人舔女人下面高潮视频| 在线一区av| 色妞www精品视频| 国产日韩一区二区在线| 裤袜国产欧美精品一区| 狠狠躁夜夜躁人人爽天天天天97 | 蜜桃视频在线免费| 91麻豆国产在线观看| 精品无码久久久久久久动漫| 天天爱天天干天天操| 99re66热这里只有精品3直播| 国产一区二区三区av在线| 人妻偷人精品一区二区三区| 成人av影院在线| 久久精品日产第一区二区三区精品版| 99久久免费国产精精品| 国产麻豆成人精品| 电影午夜精品一区二区三区| 日韩a在线看| 中文字幕一区二区三区在线播放| 国产免费xxx| 三级网站视频在在线播放| 亚洲精品欧美专区| 成人短视频在线观看免费| 牛牛电影国产一区二区| 性久久久久久久| 欧美日韩第二页| 激情欧美一区二区三区黑长吊| 91精品国产91久久综合桃花| 国产51自产区| 国产一区二区三区四区五区传媒 | 不卡中文一二三区| 久久精品2019中文字幕| 九九热这里有精品视频| 最新日韩av| 日韩免费在线免费观看| 在线免费观看高清视频| 国产精品一区2区| 久久99精品久久久久久秒播放器 | 精品亚洲成a人| 9a蜜桃久久久久久免费| 三级视频在线播放| 国产精品夫妻自拍| 91精品国产91久久久久麻豆 主演| 麻豆免费在线| 8x8x8国产精品| 中文文字幕文字幕高清| 日韩国产专区| 久久男人的天堂| 中文字幕在线2018| www.欧美.com| 国产日产欧美一区二区| 怡红院成人在线| 欧美久久免费观看| 深田咏美中文字幕| 色喇叭免费久久综合| 97精品国产97久久久久久| 一区二区三区精彩视频| 久久久亚洲国产美女国产盗摄| 艳母动漫在线免费观看| 最新日韩精品| 亚洲电影中文字幕| 一区二区三区在线播放视频| 国产精品外国| 99久久伊人精品影院| 日本一二三区在线视频| 一级中文字幕一区二区| 在线黄色免费看| 国产99久久精品一区二区300| 九九视频这里只有精品| 综合久久中文字幕| 成人激情黄色小说| 一区二区三区四区五区精品| 日韩福利一区| 日韩一区二区视频在线观看| 欧美成人短视频| 久久精品亚洲一区二区| 国产精品一区二区三区免费| caopeng在线| 欧美精品在线一区二区三区| 加勒比综合在线| 亚洲精品社区| 成人在线视频电影| 18av在线视频| 制服丝袜日韩国产| 97精品在线播放| 麻豆精品视频在线观看| 五月天国产一区| 日韩在线影院| 一区二区三区精品99久久 | 亚洲v日本v欧美v久久精品| 欧洲在线免费视频| 亚洲精品国产偷自在线观看| 国产日韩在线看| 在线观看a视频| 欧美在线看片a免费观看| 欧美高清性xxxx| 亚洲一区成人| 欧美日韩精品不卡| 中文在线8资源库| 亚洲老司机av| 男人的天堂av网站| 国产色产综合产在线视频| 丁香啪啪综合成人亚洲| 视频一区中文| 国产精品一区二区久久久| 成人区一区二区| 91精品久久久| 日韩一级片在线观看| 欧美人禽zoz0强交| 国产凹凸在线观看一区二区 | 91不卡在线观看| 国产在线拍偷自揄拍精品| 欧美日韩xx| 欧美一区二区三区在| 一区二区在线观看免费视频| 国产成人av一区二区三区在线| 国产精品无码免费专区午夜| 91成人午夜| 91av在线免费观看| 黄色大片在线看| 欧美乱妇15p| 欧美三级小视频| www.日韩大片| 午夜免费一区二区| 久久久久久久久久久久久久久久久久| 91亚洲精华国产精华| 欧美人体视频xxxxx| 亚洲精品国产美女| 中文av免费观看| 一区二区三区四区乱视频| 韩国三级与黑人| 亚洲大胆视频| 欧美第一黄网| 国产成人午夜性a一级毛片| 久久久国产一区二区三区| 亚洲精品一区二区三区新线路 | 精品对白一区国产伦| 99热只有这里有精品| 国产精品日日摸夜夜摸av| 日韩av福利在线观看| 国产欧美成人| 亚洲视频精品一区| 91蜜桃臀久久一区二区| 欧美最猛性xxxxx免费| 老司机在线永久免费观看| 精品女同一区二区| 高潮毛片又色又爽免费 | 日韩免费电影一区二区| 精品国产第一国产综合精品| 69久久夜色精品国产69乱青草| jizz在线观看| 精品国产污污免费网站入口| 国产性生活视频| 一区二区激情小说| 少妇无套高潮一二三区| 成人性色生活片免费看爆迷你毛片| 香蕉视频禁止18| 99精品免费网| 一二三四中文字幕| 国产亚洲一卡2卡3卡4卡新区| 999热视频| 国产91欧美| 青青草国产精品一区二区| 手机在线免费av| 亚洲人成电影网| 六月婷婷综合网| 3d成人动漫网站| 中文在线观看免费高清| 婷婷国产在线综合| 欧美三级日本三级| 中文字幕免费观看一区| 国产熟妇搡bbbb搡bbbb| 成人一级片网址| 亚洲成人手机在线观看| 日本视频在线一区| 欧美牲交a欧美牲交| 国产精品sm| 日本不卡一区二区三区四区| 日韩黄色大片网站| 日本一区视频在线观看免费| 国产成人在线中文字幕| 91pron在线| 国产精品免费精品自在线观看| 国产精品欧美日韩一区二区| 666av成人影院在线观看| 91精品国产成人| 超免费在线视频| 久久久久久久久久国产精品| 在线观看中文字幕的网站| 久青草国产97香蕉在线视频| 欧美黑人激情| 久久视频精品在线| 中文字幕在线免费| 在线播放国产一区中文字幕剧情欧美| 国产福利电影在线| 亚洲色图五月天| 成人全视频高清免费观看| 亚洲色图欧美制服丝袜另类第一页| 性高潮久久久久久久久久| 亚洲国产精品嫩草影院久久| 后入内射欧美99二区视频| 亚洲精品在线观看网站| 欧美自拍第一页| 亚洲精品大尺度| 日本人妖在线| 伊人青青综合网站| eeuss影院www在线观看| 中文字幕亚洲无线码a| 色多多视频在线观看| 另类色图亚洲色图| 四虎影院观看视频在线观看 | 国产全是老熟女太爽了| 成人av片在线观看| 影音先锋人妻啪啪av资源网站| 成人黄色av电影| 黄色网址在线视频| 久久久久久久精| 日本美女黄色一级片| 亚洲天堂久久久久久久| 黄色一级片在线| 天天综合网 天天综合色| 久久久久久久久久久久久av| 在线日韩一区二区| 91在线视频国产| 欧美精品一区在线观看| 日产精品久久久久久久性色| 最近2019年好看中文字幕视频| 国产区在线观看| 久久久免费观看视频| 中文字幕在线视频久| 国产精品自拍网| 成人av动漫| 视频在线精品一区| 中国成人一区| 无码人妻丰满熟妇区96| 日本aⅴ免费视频一区二区三区| 三日本三级少妇三级99| 99这里只有久久精品视频| 特级西西人体4444xxxx| 久久伊人蜜桃av一区二区| 永久免费观看片现看| 五月婷婷综合在线| 国产又粗又长又黄| 精品国产青草久久久久福利| 国产日韩精品在线看| 欧美第一淫aaasss性| 欧美va在线| 国产精品免费视频一区二区| 成人在线国产| 青青艹视频在线| 国产一区二区0| 一级黄色性视频| 亚洲蜜臀av乱码久久精品| 国产九色在线播放九色| 日韩欧美在线影院| www在线免费观看| 97色在线观看免费视频| 国产精品一区免费在线 | 日韩欧美高清| 精品这里只有精品| 国产精品一区二区果冻传媒| 色综合99久久久无码国产精品| 亚洲一级二级三级在线免费观看| 在线观看国产区| 亚洲精品国产精品乱码不99按摩 | 超碰97久久国产精品牛牛| 日韩偷拍一区二区| 一本色道久久| 台湾佬美性中文| 亚洲色图视频网站| 国产精品尤物视频| 日韩电影在线观看中文字幕| 天堂va在线| 亚洲一区中文字幕| 日韩欧美中字| 亚洲国产精品毛片av不卡在线| 成人av手机在线观看| 麻豆疯狂做受xxxx高潮视频| 欧美乱妇15p| 1pondo在线播放免费| 欧美激情网友自拍| 亚洲91在线| 日韩久久久久久久| 喷水一区二区三区| 国产激情在线免费观看| 精品女同一区二区三区在线播放| 亚洲黄色在线观看视频| 欧美成人三级视频网站| 色狠狠一区二区三区| 亚洲色图自拍| 久久99久久精品| 免费成人深夜蜜桃视频| 欧美色中文字幕| h网站视频在线观看| 国产精品福利网| 精品一区二区三区的国产在线观看| 男人天堂999| 久久久三级国产网站| 中文字幕一区二区人妻电影| 亚洲女人天堂色在线7777| 成人性生交大片免费观看网站| 蜜桃传媒视频麻豆第一区免费观看 | 欧美一区二区免费视频| 羞羞的视频在线观看| 91丝袜脚交足在线播放| 国产精品大片| www.88av| 日本韩国欧美一区二区三区| 久久99久久| 国产精品美女呻吟| 亚洲激情五月| 午夜精品中文字幕| 亚洲免费资源在线播放| 成 人 黄 色 片 在线播放| 欧美激情在线观看视频| 欧美大奶一区二区| 少妇高清精品毛片在线视频 | 777午夜精品免费视频| a视频在线免费看| 精品免费二区三区三区高中清不卡| 亚洲欧美日韩国产一区| 免费一级特黄3大片视频| 5月丁香婷婷综合| 99热99re6国产在线播放| 欧美日本韩国一区二区三区| 蜜臀av一区二区| 青青草手机在线观看| 日韩第一页在线| 少妇高潮一区二区三区99| 欧美黑人在线观看| 久久久久久综合|