精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产在视频线精品视频| 日韩av资源在线| 少妇人妻偷人精品一区二区| 亚洲综合99| 中文字幕少妇一区二区三区| 91av免费观看| 日本在线精品| 夜夜精品浪潮av一区二区三区| 看高清中日韩色视频| 国产精品怡红院| 美女被久久久| 欧美日本高清视频| 性の欲びの女javhd| 波多野结衣欧美| 欧美日韩午夜影院| 六月婷婷在线视频| 国产三级在线播放| 国产亚洲精品aa| 国产嫩草一区二区三区在线观看| 中文字幕在线播放不卡| 国产一区白浆| 欧美激情欧美狂野欧美精品| 亚洲一二三四视频| 久久夜色精品国产噜噜av小说| 欧美日韩三级视频| 国产成人无码a区在线观看视频| 免费黄色在线网站| 国产婷婷色一区二区三区四区| 91亚洲精品久久久久久久久久久久| 国产 日韩 欧美 在线| 最新欧美人z0oozo0| 在线观看欧美视频| 自拍视频一区二区| 国产色噜噜噜91在线精品| 欧美片网站yy| 成人性生生活性生交12| 日韩伦理精品| 欧美日韩国产色视频| www.好吊操| 国产三区在线观看| 亚洲欧洲国产专区| 黄频视频在线观看| 新91视频在线观看| 97成人超碰| 91丨九色丨蝌蚪富婆spa| 久久久久久久色| 91成人在线观看喷潮蘑菇| 亚洲一区二区激情| 亚洲中文无码av在线| 精品国产乱码| 日韩电影在线观看中文字幕| 国产国语老龄妇女a片| 国产在线视频欧美一区| 亚洲成人一区二区在线观看| 国产女教师bbwbbwbbw| 成人免费网址| 亚洲精品伦理在线| www.国产亚洲| heyzo高清在线| 香蕉成人啪国产精品视频综合网| 欧美人成在线观看| 91吃瓜在线观看| 狠狠躁夜夜躁人人爽天天天天97| 能在线观看的av| 欧美无毛视频| 欧美日韩一区 二区 三区 久久精品| 男人添女人下面免费视频| 国产三级一区| 日韩一区二区精品葵司在线| 中文字幕一二三区| 久久99偷拍| 日韩电影在线观看中文字幕| 91精品人妻一区二区三区蜜桃欧美| 国产最新精品| 日韩在线欧美在线国产在线| 日韩欧美综合视频| 极品中文字幕一区| 日本久久中文字幕| 中文字幕欧美人妻精品| 狠狠色丁香九九婷婷综合五月 | а√天堂资源国产精品| 欧美色涩在线第一页| 亚欧精品在线视频| 久久久亚洲欧洲日产| 亚洲网在线观看| 国产精品夜夜夜爽阿娇| 海角社区69精品视频| 欧美在线播放视频| 91免费视频播放| 成人国产精品视频| 神马一区二区影院| 欧洲中文在线| 欧美亚男人的天堂| 欧美69精品久久久久久不卡| 亚洲宅男一区| 欧美精品亚州精品| 黄瓜视频在线免费观看| 国产真实乱子伦精品视频| 国产一区二区三区奇米久涩| 9色在线观看| 性欧美大战久久久久久久久| 日本三级黄色网址| 激情亚洲另类图片区小说区| 在线日韩精品视频| 久久久久久久伊人| 蜜桃免费网站一区二区三区 | 综合色就爱涩涩涩综合婷婷| 久久网福利资源网站| av资源免费观看| 国内精品伊人久久久久av一坑 | 台湾av在线二三区观看| 日韩一区在线看| 久久久精品在线视频| 日本精品国产| 色系列之999| 中文字幕视频网| 成人综合婷婷国产精品久久 | 亚洲综合精品一区二区| 成人h小游戏| 一本久久精品一区二区| wwwww在线观看| 999国产精品视频| 国产成人avxxxxx在线看| 国产 日韩 欧美 综合| 成人免费在线观看入口| 亚洲黄色a v| 亚洲精品亚洲人成在线观看| 欧美激情综合亚洲一二区| 91亚洲视频在线观看| 久久久www成人免费毛片麻豆| 91成人综合网| 亚洲精品777| 中文国产成人精品久久一| 91视频久久久| 久久久久久黄色| 啊啊啊一区二区| 激情av综合| 91精品国产色综合| 丰满人妻一区二区三区四区53| 亚洲男人天堂av网| 尤物网站在线看| 亚洲精品va| 亚洲free性xxxx护士hd| 黄视频网站在线看| 欧美一级欧美三级| 清纯粉嫩极品夜夜嗨av| 国产成人精品在线看| 天天想你在线观看完整版电影免费| 久久天天久久| 久久久精品免费| 国产av精国产传媒| 一区二区日韩av| av影片在线播放| 国产精品vip| 亚洲最大福利网站| 日本乱理伦在线| 精品成a人在线观看| 日韩福利片在线观看| 99这里都是精品| 日本一本二本在线观看| av永久不卡| 91精品中国老女人| 日韩av毛片| 精品在线观看国产| 亚洲精品一区二三区| 国产精品久久久久久久久晋中 | 在线观看毛片网站| 成人免费在线播放视频| 2018国产精品| 免费久久99精品国产自在现线| 日韩欧美亚洲在线| www.久久爱.com| 国内免费久久久久久久久久久 | 国产成人高清精品免费5388| 91av在线播放视频| 国产黄色在线| 日韩一级欧美一级| 国产a∨精品一区二区三区仙踪林| 久久久综合精品| 最新国产黄色网址| 伊人久久大香线蕉av超碰演员| 久久久精彩视频| 久久三级毛片| 97精品在线视频| 色综合久久久久综合一本到桃花网| 欧美一区二区播放| 国产微拍精品一区| 亚洲色图欧美在线| 欧美成人三级伦在线观看| 美女在线视频一区| 人人妻人人澡人人爽欧美一区双| 妖精视频一区二区三区| 国产在线久久久| 97蜜桃久久| 最近2019中文字幕第三页视频| 亚洲高清视频网站| 91电影在线观看| 九九热视频精品| 国产亚洲精品bt天堂精选| 中文字幕一二三| 水野朝阳av一区二区三区| 一二三四中文字幕| 欧洲杯什么时候开赛| 国新精品乱码一区二区三区18| 免费在线观看一区| 欧美激情精品久久久| 国产区在线视频| 亚洲国产精品yw在线观看| 亚洲怡红院av| 五月综合激情网| wwwav国产| 国产精品五月天| 久久精品国产亚洲av麻豆| 国产v综合v亚洲欧| 91精产国品一二三产区别沈先生| 亚洲欧美日本视频在线观看| 好色先生视频污| 精品99久久| 欧美精品免费观看二区| 在线精品国产亚洲| 亚洲www在线| 日本国产亚洲| 国产精品人人做人人爽| 九色porny自拍视频在线观看| 久久久久99精品久久久久| 成年人视频在线观看免费| 日韩精品在线免费观看| 亚洲精品一区二区三区区别| 欧美人牲a欧美精品| 中文在线免费看视频| 日韩欧美中文在线| 日本一二三区不卡| 亚洲一区二区中文在线| 国产少妇在线观看| 亚洲视频免费看| 九九这里只有精品视频| 国产精品无人区| youjizz亚洲女人| 中文字幕免费在线观看视频一区| 久久精品老司机| zzijzzij亚洲日本少妇熟睡| 国产女主播在线播放| 国产精品影视天天线| 日本黄色一级网站| 国产高清视频一区| 亚洲成人福利视频| 国产不卡视频一区二区三区| 国产sm在线观看| 成人免费视频caoporn| 欧美日韩一区二区三区四区五区六区| 国产高清视频一区| 久久性爱视频网站| 91欧美一区二区| 人妻av无码一区二区三区| 久久久青草青青国产亚洲免观| 三上悠亚ssⅰn939无码播放| 久久免费精品国产久精品久久久久| 星空大象在线观看免费播放| 久久综合网色—综合色88| 成人免费毛片糖心| 日本一二三不卡| 三级黄色录像视频| 一级日本不卡的影视| 91九色丨porny丨肉丝| 一本色道久久综合亚洲精品按摩| 亚洲免费视频二区| 在线播放日韩导航| 高清毛片aaaaaaaaa片| 亚洲人成网在线播放| 天天影视久久综合| 九九久久精品一区| 国产污视频在线播放| 国产精品美女久久| 精品一区二区三区四区五区| 国产无套精品一区二区| 国产一区网站| 国产日韩视频在线播放| 在线看片一区| 日本免费观看网站| 国产成人av电影在线| 免费a在线观看播放| 国产精品欧美一级免费| 国产亚洲第一页| 色一情一乱一乱一91av| 一级片在线观看视频| 亚洲国产精品电影| 99reav在线| 97视频在线观看播放| 日韩免费在线电影| 国产在线精品一区二区三区》| 第一会所亚洲原创| 无码人妻少妇伦在线电影| 日本在线播放一区二区三区| 色综合久久久无码中文字幕波多| 久久久国产精品午夜一区ai换脸| 免费又黄又爽又色的视频| 在线免费观看日本欧美| www.久久久久久久久久| 亚洲无限av看| 爱啪啪综合导航| 91亚洲精品一区| 国产精品一线天粉嫩av| 久久福利一区二区| 奇米精品一区二区三区在线观看一 | www.综合网.com| 国产精品欧美一区二区三区奶水| 精品欠久久久中文字幕加勒比| 中文字幕成人一区| 丝袜诱惑亚洲看片| 国产美女视频免费观看下载软件| 亚洲欧美综合网| 国产日韩久久久| 亚洲国内精品视频| 性欧美videoshd高清| 国产中文日韩欧美| 国产精品亚洲片在线播放| 霍思燕三级露全乳照| 91老司机福利在线| 久久激情视频免费观看| 亚洲一级在线播放| 亚洲欧美在线免费| 国产在线xxx| 91九色蝌蚪国产| 国产欧美日韩精品一区二区三区| 精品视频免费在线播放| 国产一区二区免费在线| 中文字幕资源站| 欧美三区在线观看| 国产在线一二| 国产成人一区二区| 欧美热在线视频精品999| 国产一区二区在线视频播放| gogo大胆日本视频一区| 久久久国产精品黄毛片| 欧美一区二区三区在线观看| 嫩草香蕉在线91一二三区| 国产精品美女久久久免费| blacked蜜桃精品一区| 97公开免费视频| 欧美国产一区二区在线观看| 蜜臀99久久精品久久久久小说| 亚洲人精品午夜在线观看| 在线播放高清视频www| 精品九九九九| 亚洲欧美春色| 法国空姐电影在线观看| 欧洲激情一区二区| av小片在线| 91精品啪aⅴ在线观看国产| 日韩国产专区| 国产aⅴ爽av久久久久| 亚洲欧美日韩中文字幕一区二区三区| 136福利视频导航| 美女啪啪无遮挡免费久久网站| 国产精品一区二区精品| 欧美黑人在线观看| 99免费精品视频| 亚洲黄网在线观看| 在线精品播放av| 精品久久亚洲| 成品人视频ww入口| 91原创在线视频| 亚洲精品国产欧美在线观看| 中文字幕日韩欧美在线视频| 精品一区二区三区视频在线播放 | 欧美性大战xxxxx久久久| 91露出在线| 97se亚洲综合在线| 亚洲一区二区三区高清| 国产18无套直看片| 日韩一区二区三区视频| 国产在线精彩视频| 色姑娘综合网| 国产成人综合自拍| 91玉足脚交嫩脚丫在线播放| 在线日韩第一页| 97se亚洲| 草草久久久无码国产专区| 国产女同性恋一区二区| 国产高清免费av| 欧美性视频精品| 国产韩国精品一区二区三区| 在线播放第一页| 在线观看亚洲a| 婷婷av在线| 色姑娘综合av| 波多野结衣91| 亚洲一级黄色大片| 69视频在线播放| 99精品综合| 三级黄色片网站| 日韩免费看网站| 影视一区二区三区| 男人添女荫道口喷水视频| 国产精品色噜噜| 日本福利片在线| 91久色国产| 奇米色一区二区| 久久青青草视频| 久久97精品久久久久久久不卡|