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

關于new和delete 一些不得不說的事

開發 后端
new和delete在C++中作用很大,但是當你寫下new和delete的時候,到底發生了什么事,你了解過嗎?本文為你講述當你寫下new和delete的時候,到底發生了什么事。

當你寫下new和delete的時候,到底發生了什么事呢,讓我們來做個試驗看看。

寫一段小代碼:

  1. class a  
  2. {  
  3. public:  
  4.  a()  
  5.  {  
  6.   foo();  
  7.  }  
  8.  int foo()  
  9.  {  
  10.   return 0;  
  11.  }  
  12.  
  13.  ~a()  
  14.  {  
  15.   bar();  
  16.  }  
  17.  
  18.  int bar()  
  19.  {  
  20.   return 1;  
  21.  }  
  22. };  
  23.  
  24. int _tmain(int argc, _TCHAR* argv[])  
  25. {  
  26.  a* tmp = new a();  
  27.  delete tmp;  
  28.  return 0;  
  29. }  

在main函數的第一句下斷點,調試,然后開匯編窗口輸出結果:

  1. int _tmain(int argc, _TCHAR* argv[])  
  2. {  
  3. 004113F0  push        ebp    
  4. 004113F1  mov         ebp,esp   
  5. 004113F3  push        0FFFFFFFFh   
  6. 004113F5  push        offset __ehhandler$_wmain (41478Eh)   
  7. 004113FA  mov         eax,dword ptr fs:[00000000h]   
  8. 00411400  push        eax    
  9. 00411401  sub         esp,100h   
  10. 00411407  push        ebx    
  11. 00411408  push        esi    
  12. 00411409  push        edi    
  13. 0041140A  lea         edi,[ebp-10Ch]   
  14. 00411410  mov         ecx,40h   
  15. 00411415  mov         eax,0CCCCCCCCh   
  16. 0041141A  rep stos    dword ptr es:[edi]   
  17. 0041141C  mov         eax,dword ptr [___security_cookie (418000h)]   
  18. 00411421  xor         eax,ebp   
  19. 00411423  push        eax    
  20. 00411424  lea         eax,[ebp-0Ch]   
  21. 00411427  mov         dword ptr fs:[00000000h],eax   
  22.  /*a* tmp = new a();*/ 
  23. 0041142D  push        1      
  24. 0041142F  call        operator new (4111A4h)   
  25. 00411434  add         esp,4   
  26. 00411437  mov         dword ptr [ebp-0F8h],eax   
  27. 0041143D  mov         dword ptr [ebp-4],0   
  28. 00411444  cmp         dword ptr [ebp-0F8h],0   
  29. 0041144B  je          wmain+70h (411460h)   
  30. 0041144D  mov         ecx,dword ptr [ebp-0F8h]   
  31. 00411453  call        a::a (41101Eh)   
  32. 00411458  mov         dword ptr [ebp-10Ch],eax   
  33. 0041145E  jmp         wmain+7Ah (41146Ah)   
  34. 00411460  mov         dword ptr [ebp-10Ch],0   
  35. 0041146A  mov         eax,dword ptr [ebp-10Ch]   
  36. 00411470  mov         dword ptr [ebp-104h],eax   
  37. 00411476  mov         dword ptr [ebp-4],0FFFFFFFFh   
  38. 0041147D  mov         ecx,dword ptr [ebp-104h]   
  39. 00411483  mov         dword ptr [ebp-14h],ecx   
  40.  /*delete tmp;*/ 
  41. 00411486  mov         eax,dword ptr [ebp-14h]   
  42. 00411489  mov         dword ptr [ebp-0E0h],eax   
  43. 0041148F  mov         ecx,dword ptr [ebp-0E0h]   
  44. 00411495  mov         dword ptr [ebp-0ECh],ecx   
  45. 0041149B  cmp         dword ptr [ebp-0ECh],0   
  46. 004114A2  je          wmain+0C9h (4114B9h)   
  47. 004114A4  push        1      
  48. 004114A6  mov         ecx,dword ptr [ebp-0ECh]   
  49. 004114AC  call        a::`scalar deleting destructor' (41117Ch)   
  50. 004114B1  mov         dword ptr [ebp-10Ch],eax   
  51. 004114B7  jmp         wmain+0D3h (4114C3h)   
  52. 004114B9  mov         dword ptr [ebp-10Ch],0   
  53.  /*return 0;*/ 
  54. 004114C3  xor         eax,eax   
  55. }  
  56. 004114C5  mov         ecx,dword ptr [ebp-0Ch]   
  57. 004114C8  mov         dword ptr fs:[0],ecx   
  58. 004114CF  pop         ecx    
  59. 004114D0  pop         edi    
  60. 004114D1  pop         esi    
  61. 004114D2  pop         ebx    
  62. 004114D3  add         esp,10Ch   
  63. 004114D9  cmp         ebp,esp   
  64. 004114DB  call        @ILT+345(__RTC_CheckEsp) (41115Eh)   
  65. 004114E0  mov         esp,ebp   
  66. 004114E2  pop         ebp    
  67. 004114E3  ret     

前面一片調整stack,插入安全代碼,設置異常處理等的操作不是今天我們要說的重點,直接跳到a* tmp = new a();這一句產生的反匯編:

  1. 0041142F call operator new (4111A4h) 

我們很明確的看到調用了一個函數operator new。繼續跟進operator new看到底做了什么事情:

  1. void *__CRTDECL operator new(size_t size) _THROW1(_STD bad_alloc)  
  2.         {       // try to allocate size bytes  
  3.         void *p;  
  4.         while ((p = malloc(size)) == 0)  
  5.                 if (_callnewh(size) == 0)  
  6.                 {       // report no memory  
  7.                 static const std::bad_alloc nomem;  
  8.                 _RAISE(nomem);  
  9.                 }  
  10.  
  11.         return (p);  
  12.         }  

很意外吧,其實operator new函數就做了那么一件事情:調用malloc函數分配內存。有沒有負責調用構造函數?這個真沒有。。。

#p#

那構造函數到底是誰調用的?看operator new下面的那片匯編代碼:

  1. 00411434  add         esp,4   
  2. 00411437  mov         dword ptr [ebp-0F8h],eax   
  3. 0041143D  mov         dword ptr [ebp-4],0   
  4. 00411444  cmp         dword ptr [ebp-0F8h],0   
  5. 0041144B  je          wmain+70h (411460h)   
  6. 0041144D  mov         ecx,dword ptr [ebp-0F8h]   
  7. 00411453  call        a::a (41101Eh)  

出去將返回值賦給tmp的操作,我們看到了一處函數調用:

  1. 00411453 call a::a (41101Eh)  

沒錯,對類a的構造函數的調用,是編譯器偷偷在你的函數里插入的,當時的情況就是如此。delete的情況也是一摸一樣。
再來看針對對象數組的new和delete:

  1. class a  
  2. {  
  3. public:  
  4.  a()  
  5.  {  
  6.   int i1;  
  7.   int j1 = 0;  
  8.   static int k1;  
  9.   static int l1 = 0;  
  10.   foo();  
  11.  }  
  12.  int foo()  
  13.  {  
  14.   return 0;  
  15.  }  
  16.  
  17.  ~a()  
  18.  {  
  19.   int i2;  
  20.   int j2 = 0;  
  21.   static int k2;  
  22.   static int l2 = 0;  
  23.   bar();  
  24.  }  
  25.  
  26.  int bar()  
  27.  {  
  28.   return 1;  
  29.  }  
  30. };  
  31.  
  32. int _tmain(int argc, _TCHAR* argv[])  
  33. {  
  34.  a* tmp = new a[10];  
  35.  delete[] tmp;  
  36.  return 0;  
  37. }  

反匯編之后的結果如下:

  1. int _tmain(int argc, _TCHAR* argv[])  
  2. {  
  3. 004113F0  push        ebp    
  4. 004113F1  mov         ebp,esp   
  5. 004113F3  push        0FFFFFFFFh   
  6. 004113F5  push        offset __ehhandler$_wmain (41478Eh)   
  7. 004113FA  mov         eax,dword ptr fs:[00000000h]   
  8. 00411400  push        eax    
  9. 00411401  sub         esp,100h   
  10. 00411407  push        ebx    
  11. 00411408  push        esi    
  12. 00411409  push        edi    
  13. 0041140A  lea         edi,[ebp-10Ch]   
  14. 00411410  mov         ecx,40h   
  15. 00411415  mov         eax,0CCCCCCCCh   
  16. 0041141A  rep stos    dword ptr es:[edi]   
  17. 0041141C  mov         eax,dword ptr [___security_cookie (418000h)]   
  18. 00411421  xor         eax,ebp   
  19. 00411423  push        eax    
  20. 00411424  lea         eax,[ebp-0Ch]   
  21. 00411427  mov         dword ptr fs:[00000000h],eax   
  22.  a* tmp = new a[10];  
  23. 0041142D  push        0Eh    
  24. 0041142F  call        operator new (4111A4h)   
  25. 00411434  add         esp,4   
  26. 00411437  mov         dword ptr [ebp-0F8h],eax   
  27. 0041143D  mov         dword ptr [ebp-4],0   
  28. 00411444  cmp         dword ptr [ebp-0F8h],0   
  29. 0041144B  je          wmain+97h (411487h)   
  30. 0041144D  mov         eax,dword ptr [ebp-0F8h]   
  31. 00411453  mov         dword ptr [eax],0Ah   
  32. 00411459  push        offset a::`scalar deleting destructor' (41100Ah)   
  33. 0041145E  push        offset a::a (41101Eh)   
  34. 00411463  push        0Ah    
  35. 00411465  push        1      
  36. 00411467  mov         ecx,dword ptr [ebp-0F8h]   
  37. 0041146D  add         ecx,4   
  38. 00411470  push        ecx    
  39. 00411471  call        `eh vector constructor iterator' (4111F9h)   
  40. 00411476  mov         edx,dword ptr [ebp-0F8h]   
  41. 0041147C  add         edx,4   
  42. 0041147F  mov         dword ptr [ebp-10Ch],edx   
  43. 00411485  jmp         wmain+0A1h (411491h)   
  44. 00411487  mov         dword ptr [ebp-10Ch],0   
  45. 00411491  mov         eax,dword ptr [ebp-10Ch]   
  46. 00411497  mov         dword ptr [ebp-104h],eax   
  47. 0041149D  mov         dword ptr [ebp-4],0FFFFFFFFh   
  48. 004114A4  mov         ecx,dword ptr [ebp-104h]   
  49. 004114AA  mov         dword ptr [ebp-14h],ecx   
  50.  delete[] tmp;  
  51. 004114AD  mov         eax,dword ptr [ebp-14h]   
  52. 004114B0  mov         dword ptr [ebp-0E0h],eax   
  53. 004114B6  mov         ecx,dword ptr [ebp-0E0h]   
  54. 004114BC  mov         dword ptr [ebp-0ECh],ecx   
  55. 004114C2  cmp         dword ptr [ebp-0ECh],0   
  56. 004114C9  je          wmain+0F0h (4114E0h)   
  57. 004114CB  push        3      
  58. 004114CD  mov         ecx,dword ptr [ebp-0ECh]   
  59. 004114D3  call        a::`vector deleting destructor' (4111F4h)   
  60. 004114D8  mov         dword ptr [ebp-10Ch],eax   
  61. 004114DE  jmp         wmain+0FAh (4114EAh)   
  62. 004114E0  mov         dword ptr [ebp-10Ch],0   
  63.  return 0;  
  64. 004114EA  xor         eax,eax   
  65. }  
  66. 004114EC  mov         ecx,dword ptr [ebp-0Ch]   
  67. 004114EF  mov         dword ptr fs:[0],ecx   
  68. 004114F6  pop         ecx    
  69. 004114F7  pop         edi    
  70. 004114F8  pop         esi    
  71. 004114F9  pop         ebx    
  72. 004114FA  add         esp,10Ch   
  73. 00411500  cmp         ebp,esp   
  74. 00411502  call        @ILT+345(__RTC_CheckEsp) (41115Eh)   
  75. 00411507  mov         esp,ebp   
  76. 00411509  pop         ebp    
  77. 0041150A  ret           
  78.   

其他部分都大同小異,關鍵的不同在編譯器插入的,用于初始化的代碼:

  1. 00411459  push        offset a::`scalar deleting destructor' (41100Ah)   
  2. 0041145E  push        offset a::a (41101Eh)   
  3. 00411463  push        0Ah    
  4. 00411465  push        1      
  5. 00411467  mov         ecx,dword ptr [ebp-0F8h]   
  6. 0041146D  add         ecx,4   
  7. 00411470  push        ecx    
  8. 00411471  call        `eh vector constructor iterator' (4111F9h) 

我們看到數組大小0Ah,構造函數的地址41101Eh都被壓入棧中,作為某函數的參數。到底是什么函數呢?就是:

  1. 00411471  call        `eh vector constructor iterator' (4111F9h) 

一個名為`eh vector constructor iterator' 的函數。我們還注意到a類的析構函數的地址也被當成參數傳入,這是干什么用的呢?構造函數里為什么要析構函數的地址?比如在遍歷調用構造函數的過程中,前8個都是沒問題的,到第9個突然資源不足調用失敗了,那么在返回前無論如何也要先把前8個的析構函數調用一遍,防止資源泄露。

delete[]的過程也大同小異,不過一個很有趣的地方是,“vector deleting destructor'”是a類的成員函數,而與‘eh vector constructor iterator’對應的`eh vector destructor iterator'函數在“vector deleting destructor'”函數內部:

  1. 004134AD  call        `eh vector destructor iterator' (411203h)  

。。。

  1. 004134C1  call        operator delete (4110A0h) 

回收內存的操作,也在a::`vector deleting destructor'里。

【編輯推薦】

  1. 《Java編程思想》作者:C++不垃圾,只是Java很傲慢
  2. Java與C++語言在作用域上的差異淺析
  3. C/C++使用多種方法獲取文件大小代碼
  4. C++類成員函數的重載、覆蓋與隱藏
  5. 在C++中使用Lambda函數提高代碼性能
責任編輯:yangsai 來源: gussing是個錯別字
相關推薦

2010-05-26 15:17:06

Windows Emb

2009-05-20 13:03:40

Visual StudSilverlight微軟

2014-04-15 10:18:24

中文女工科男

2019-12-24 14:04:59

PythonExcel數據處理

2019-10-18 17:55:03

安全運營

2014-10-21 11:05:52

英特爾Linux

2019-11-14 15:38:46

AndroidRelease項目

2020-06-15 08:19:00

ZooKeeperEureka

2011-04-26 09:44:05

Power Cloud

2018-08-06 11:59:00

混合云數據中心上云

2015-08-31 14:12:12

DockerKubernetesPaaS

2011-04-27 10:31:29

兼容墨盒用戶體驗

2010-05-19 15:45:52

統一通信VoIP

2012-08-30 10:15:50

IPv6

2015-02-05 09:32:19

單元測試

2015-01-16 16:44:50

2024-02-04 00:00:03

運維Linux磁盤

2015-12-11 11:58:51

光合資本

2011-05-31 09:29:31

C++Linus Torva

2022-10-27 09:55:00

點贊
收藏

51CTO技術棧公眾號

日韩h在线观看| 91网站在线观看视频| 一区二区国产精品视频| 欧美成人福利在线观看| 国产色在线观看| 国产成人免费视| 欧美一级淫片aaaaaaa视频| 黄色片网站免费| 亚洲成人影音| 色婷婷久久久综合中文字幕 | 欧美日本视频在线观看| 第一视频专区在线| 懂色一区二区三区免费观看| 欧亚精品中文字幕| 中文字幕亚洲欧美日韩| 欧美激情视频二区| 日韩电影网站| 亚洲欧美色图小说| 久久国产精品精品国产色婷婷| wwwwww在线观看| 国内精品美女在线观看 | 成人久久精品视频| 在线能看的av| 女人香蕉久久**毛片精品| 亚洲欧美激情一区| 午夜福利三级理论电影 | 亚洲在线观看视频网站| 天天操夜夜操视频| 欧美 日韩 国产一区二区在线视频 | 久久久av电影| 最近中文字幕在线mv视频在线| 午夜视频一区二区在线观看| 欧美日韩一区二区三区在线看| 日韩欧美国产综合在线| gogo在线观看| 国产人伦精品一区二区| 韩国成人av| 国产激情视频在线播放| 久久er99热精品一区二区| 国产v综合ⅴ日韩v欧美大片 | 国产精品久久久久999| 久久久香蕉视频| 91成人看片| 日韩小视频网址| 亚洲色图第四色| 日韩mv欧美mv国产网站| 亚洲福利视频免费观看| 风韵丰满熟妇啪啪区老熟熟女| 91麻豆精品国产综合久久久| 色国产综合视频| 亚洲高清在线观看| 国产精品亚洲不卡a| va视频在线观看| 久久99精品久久久久婷婷| 国产成人精品一区| 怡红院av久久久久久久| 久久不射2019中文字幕| 97成人精品区在线播放| 在线免费观看毛片| 最新国产乱人伦偷精品免费网站| 欧美精品video| 国产一级片免费看| 亚洲激情一区| 欧美一区视频在线| 无码人妻精品一区二区三区不卡| 久久婷婷一区| 国产欧美久久一区二区| 夜夜躁狠狠躁日日躁av| 九九在线精品视频| 99影视tv| 特黄视频在线观看| 精品美女视频在线观看免费软件 | 亚洲精品在线网址| 国产一区二区三区国产精品| 欧美一区二区三区免费观看视频 | 亚洲欧美在线人成swag| 这里只有精品免费| 黑人巨大猛交丰满少妇| 成人精品动漫一区二区三区| 欧美一级一级性生活免费录像| 国产在线视频三区| 成人涩涩网站| 亚洲精品自在久久| 欧美aaa级片| 综合在线视频| 68精品久久久久久欧美| 亚洲天堂男人av| 视频一区二区国产| 成人网在线视频| 东京干手机福利视频| caoporm超碰国产精品| 欧美高清性xxxxhdvideosex| 69久久久久| 亚洲激情五月婷婷| 1024精品视频| 国产精品美女久久久久| 亚洲国产精品久久久久久| 波多野结衣视频播放| 欧美亚洲国产一区| 欧美成人精品不卡视频在线观看| 日韩精品一区二区在线播放| 久久久水蜜桃av免费网站| 国产欧洲精品视频| 天天干天天色天天| 国产精品欧美一区二区三区| 91成人综合网| 成人一区视频| 亚洲精品不卡在线| 欧美爱爱免费视频| 模特精品在线| 999精品视频一区二区三区| 三级在线电影| 一区二区三区国产精品| 亚洲中文字幕久久精品无码喷水| 精品午夜av| 国产亚洲人成网站在线观看| 久久精品免费av| 久久99热狠狠色一区二区| 鲁片一区二区三区| 欧美videos另类精品| 欧美无砖专区一中文字| 国产精品久久久免费观看| 国产精品成人av| 国产成人精品999| 亚洲乱色熟女一区二区三区| 国产精品久久久久久久蜜臀| 天天夜碰日日摸日日澡性色av| 欧美特黄色片| 亚洲天堂久久av| 国产a∨精品一区二区三区仙踪林| 国产精品 日产精品 欧美精品| 少妇免费毛片久久久久久久久| 2020av在线| 欧美xxxxxxxx| 久久久久亚洲av无码专区体验| 蜜桃av一区二区三区| 欧美精品尤物在线| 国模私拍一区二区国模曼安| 欧美成人综合网站| 极品盗摄国产盗摄合集| 久久精品国产999大香线蕉| 亚洲国产精品视频一区| 亚洲成人av观看| 亚洲国产日韩欧美在线动漫| 九九热视频精品| 成人综合在线网站| 国产成人一二三区| 日本99精品| 欧美激情精品久久久久久| 国产又粗又黄又爽| 国产精品三级久久久久三级| 手机在线看福利| 日本激情一区| 国产精品一区二区久久精品 | 日韩视频在线观看免费| 欧美另类高清videos的特点| 久久久久久日产精品| 激情综合在线观看| 久久av中文| 国产精品都在这里| 午夜视频在线看| 91麻豆精品国产综合久久久久久| 男的操女的网站| 国产成人av在线影院| 久久99久久99精品| 欧美日韩一区二区三区不卡视频| 91精品国产91久久久久久| 少妇人妻精品一区二区三区| 福利二区91精品bt7086| 男人天堂av电影| 美腿丝袜一区二区三区| 中文字幕在线中文字幕日亚韩一区| 成人国产精品久久| 久久久久久久激情视频| 亚洲色图欧美视频| 欧洲av一区二区嗯嗯嗯啊| 欧美88888| 国产.欧美.日韩| 97xxxxx| 日韩精品欧美激情一区二区| 91久久精品国产91久久性色| 美女尤物在线视频| 亚洲欧美日韩天堂| 国产一区二区女内射| 亚洲国产日韩综合久久精品| 一级黄色性视频| 国产精品一品二品| 欧美视频在线播放一区| 日韩成人精品一区二区| 成人片在线免费看| 日韩毛片在线| 欧美区二区三区| 欧美香蕉爽爽人人爽| 欧美日韩国产一级二级| 国产精品二区一区二区aⅴ| 国产网站一区二区| 成人在线短视频| 久久中文精品| 日本男女交配视频| 欧美日中文字幕| 国产亚洲精品自在久久| 色综合久久久| 青草成人免费视频| 在线黄色网页| 在线成人激情视频| 天天综合网在线观看| 777久久久精品| 午夜婷婷在线观看| 亚洲已满18点击进入久久| 少妇av片在线观看| bt7086福利一区国产| 亚洲精品国产一区二区三区| 亚洲欧美高清| 精品久久久久久无码中文野结衣| 欧美第一精品| 免费成人看片网址| 日韩中文一区二区| 国产欧美中文字幕| 黄色精品视频| 欧美一性一乱一交一视频| 欧美78videosex性欧美| 色婷婷综合久久久久中文字幕1| 神马一区二区三区| 欧美成人精品福利| 国产精品视频久久久久久| 欧美性猛交xxxx免费看久久久| 精品无码m3u8在线观看| 一区二区中文字幕在线| 久久美女免费视频| 91蜜桃免费观看视频| 最新日本中文字幕| 丁香啪啪综合成人亚洲小说 | 成人激情免费网站| 一二三av在线| 久久se精品一区二区| 杨幂毛片午夜性生毛片| 首页国产欧美日韩丝袜| 国产亚洲精品网站| 欧美亚洲视频| 超碰97人人射妻| 久久精品亚洲一区二区| 欧美 国产 日本| 久久不射2019中文字幕| 红桃av在线播放| 国产精品呻吟| 999精品网站| 日韩激情一二三区| 日本熟妇人妻中出| 日本sm残虐另类| 国产日韩欧美久久| 另类的小说在线视频另类成人小视频在线| av无码精品一区二区三区| 视频一区视频二区中文| 美女喷白浆视频| 蜜桃视频一区二区三区在线观看| 亚洲激情在线观看视频| 精品一区二区三区视频在线观看 | 成+人+亚洲+综合天堂| 亚洲麻豆一区二区三区| 成人高清伦理免费影院在线观看| 国产午夜在线一区二区三区| av中文字幕一区| www.中文字幕av| 亚洲国产精品国自产拍av| 五月天婷婷丁香网| 一区二区三区中文在线观看| 久久亚洲国产成人精品性色| 亚洲成人动漫一区| 亚洲欧美日韩激情| 8x8x8国产精品| 亚洲国产www| 日韩精品免费观看| 在线观看免费版| 欧美另类交人妖| 日本在线播放一二三区| 国产精品欧美日韩一区二区| 国产一区二区三区免费在线| 国内精品久久久久久久果冻传媒| 少妇精品久久久| 国产奶头好大揉着好爽视频| 欧美视频亚洲视频| 日av中文字幕| 国产一区二区三区av电影| 日韩av手机在线播放| 中文字幕二三区不卡| 国产精品 欧美激情| 精品久久久久久久久久久久| 中文天堂在线资源| 欧美大片在线观看| 成人不用播放器| 欧美激情精品在线| a成人v在线| 国产一区二区不卡视频| 青青草综合网| 日本a视频在线观看| 蜜臂av日日欢夜夜爽一区| 少妇被狂c下部羞羞漫画| 中文字幕欧美国产| 日韩精品无码一区二区| 欧美久久一区二区| 欧美新色视频| 欧美高跟鞋交xxxxhd| 欧美国产日韩电影| 国产女人水真多18毛片18精品 | 亚洲色无码播放| 肉肉视频在线观看| 国产精品男人爽免费视频1| 成人爽a毛片免费啪啪红桃视频| 日韩精品伦理第一区| 亚洲激情女人| 少妇性l交大片7724com| 欧美极品美女视频| 啦啦啦免费高清视频在线观看| 日韩一级大片在线观看| 在线免费av电影| 欧美综合国产精品久久丁香| 99ri日韩精品视频| 香蕉视频在线网址| 日韩电影在线一区二区三区| 国产精品无码专区| 亚洲综合偷拍欧美一区色| 国产又爽又黄免费软件| 国产亚洲欧美视频| 超碰aⅴ人人做人人爽欧美| 国产成人精品免费视频大全最热| 久久中文视频| 成人免费毛片播放| 久久夜色精品国产噜噜av| 香蕉视频一区二区| 欧美成人伊人久久综合网| 免费黄色在线| 国产啪精品视频网站| 不卡日本视频| 国产三级日本三级在线播放| 久久亚洲二区三区| 欧美成人精品欧美一级乱黄| 日韩欧美国产一二三区| 成人在线免费看黄| 3d精品h动漫啪啪一区二区| 91视频精品| 一级淫片在线观看| 中文字幕一区二区三区在线观看| 中文 欧美 日韩| 最近的2019中文字幕免费一页| 成人亚洲综合| 婷婷视频在线播放| 国产麻豆一精品一av一免费| 日韩一区二区不卡视频| 欧美久久久久免费| 成人免费网址| 91久久偷偷做嫩草影院| 欧美色123| 私密视频在线观看| 欧美视频一二三| 国产黄在线观看免费观看不卡| 国产成人综合av| 日韩欧美在线中字| 免费黄频在线观看| 一区二区三区免费在线观看| 丰满人妻av一区二区三区| 97在线视频免费播放| 亚洲激情播播| wwwwww.色| 亚洲视频一区二区在线| 国产av无码专区亚洲av| 久久欧美在线电影| 综合伊思人在钱三区| caoporn超碰97| 亚洲欧美日韩国产手机在线| www.中文字幕| 91av网站在线播放| 欧美色图国产精品| 久久久福利影院| 亚洲成人中文在线| 成年人免费在线视频| 91久久久久久久久久久| 亚洲国产电影| 午夜影院黄色片| 精品久久久久av影院| 国产亚洲成av人片在线观看 | 中文乱码免费一区二区三区下载| japan高清日本乱xxxxx| 精品成人av一区| 日韩三级影院| 国产一区二区三区奇米久涩| 日韩极品在线观看| 久久综合激情网| 中文字幕精品一区久久久久| 视频在线观看免费影院欧美meiju 视频一区中文字幕精品 | 亚洲国产另类精品专区| 国产在线一二三区| 亚洲综合小说区| 久久一二三区| 久久久久久久九九九九| 国产视频久久久| 亚洲大奶少妇| 韩国日本美国免费毛片| 亚洲成人免费在线| 色网站免费在线观看| 国产综合18久久久久久|