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

10 個內存引發的大坑,你能躲開幾個?

存儲 存儲軟件
對程序員來說內存相關的 bug 排查難度幾乎和多線程問題并駕齊驅,當程序出現運行異常時可能距離真正有 bug 的那行代碼已經很遠了,這就導致問題定位排查非常困難,這篇文章將總結涉及內存的一些經典 bug ,快來看看你知道幾個,或者你的程序中現在有幾個。。。

[[382797]]

對程序員來說內存相關的 bug 排查難度幾乎和多線程問題并駕齊驅,當程序出現運行異常時可能距離真正有 bug 的那行代碼已經很遠了,這就導致問題定位排查非常困難,這篇文章將總結涉及內存的一些經典 bug ,快來看看你知道幾個,或者你的程序中現在有幾個。。。

返回局部變量地址

我們來看這樣一段代碼:

  1. int fun() {  int a = 2;  return &a;}void main() {  int* p = fun();  *p = 20;} 

這段代碼非常簡單,func 函數返回一個指向局部變量的地址,main 函數中調用 fun 函數,獲取到指針后將其設置為 20。

你能看出這段代碼有什么問題嗎?問題在于局部變量 a 位于 func 的棧幀中,當 func 執行結束,其棧幀也不復存在,因此 main 函數中調用 func 函數后得到的指針指向一個不存在的變量:

盡管上述代碼仍然可以“正常”運行,但如果后續調用其它函數比如funcB,那么指針p指向的內容將被 funcB 函數的棧幀內容覆蓋掉,又或者修改指針 p 實際上是在破壞 funcB 函數的棧幀,這將導致極其難以排查的 bug。

 

錯誤的理解指針運算

  1. int sum(int* arr, int len) { 
  2.   int sum = 0; 
  3.   for (int i = 0; i < len; i++) { 
  4.       sum += *arr; 
  5.       arr += sizeof(int); 
  6.   } 
  7.   return sum

這段代碼本意是想計算給定數組的和,但上述代碼并沒有理解指針運算的本意。指針運算中的加1并不是說移動一個字節而是移動一個單位,指針指向的數據結構大小就是一個單位。因此,如果指針指向的數據類型是 int,那么指針加 1 則移動 4 個字節(32位),如果指針指向的是結構體,該結構體的大小為 1024 字節,那么指針加 1 其實是移動 1024 字節。


 

從這里我們可以看出,移動指針時我們根本不需要關心指針指向的數據類型的大小,因此上述代碼簡單的將arr += sizeof(int)改為arr++即可。

 

解引用有問題的指針

C語言初學者常會犯一個經典錯誤,那就是從標準輸入中獲取鍵盤數據,代碼是這樣寫的:

  1. int a; 
  2. scanf("%d", a); 

很多同學并不知道這樣寫會有什么問題,因為上述代碼有時并不會出現運行時錯誤。

原來 scanf 會將a的值當做地址來對待,并將從標準輸入中獲取到的數據寫到該地址中。這時接下來程序的表現就取決于a的值了,而上述代碼中局部變量a的值是不確定的,那么這時:

如果a的值作為指針指向代碼區或者其它不可寫區域,操作系統將立刻kill掉該進程,這是最好的情況,這時發現問題還不算很難

如果a的值作為指針指向棧區,那么此時恭喜你,其它函數的棧幀已經被破壞掉了,那么程序接下來的行為將脫離掌控,這樣的 bug 極難定位

如果a的值作為指針指向堆區,那么此時也恭喜你,代碼中動態分配的內存已經被你破壞掉了,那么程序接下來的行為同樣脫離掌控,這樣的bug也極難定位

 

讀取未初始化的內存

我們來看這樣一段代碼:

  1. void add() { 
  2.   int* a = (int*)malloc(sizeof(int)); 
  3.   *a += 10; 

上述代碼的錯誤之處在于假設從堆上動態分配的內存總是初始化為 0,實際上并不是這樣的。我們需要知道,當調用 malloc 時實際上有以下兩種可能:

如果 malloc 自己維護的內存夠用,那么 malloc 從空閑內存中找到一塊大小合適的返回,注意,這一塊內存可能是之前用過后釋放的。在這種情況下,這塊內存包含了上次使用時留下的信息,因此不一定為0

如果 malloc 自己維護的內存不夠用,那么通過 brk 等系統調用向操作系統申請內存,在這種情況下操作系統返回的內存確實會被初始化為0。原因很簡單,操作系統返回的這塊內存可能之前被其它進程使用過,這里面也許會包含了一些敏感信息,像密碼之類,因此出于安全考慮防止你讀取到其它進程的信息,操作系統在把內存交給你之前會將其初始化為0。

現在你應該知道了吧,你不能想當然的假定 malloc 返回給你的內存已經被初始化為 0,你需要自己手動清空。

 

內存泄

  1. void memory_leak() { 
  2.   int *p = (int *)malloc(sizeof(int)); 
  3.   return

上述代碼在申請一段內存后直接返回,這樣申請到的這塊內存在代碼中再也沒有機會釋放掉了,這就是內存泄漏。內存泄漏是一類極為常見的問題,尤其對于不支持自動垃圾回收的語言來說,但并不是說自帶垃圾回收的語言像 Java 等就不會有內存泄漏,這類語言同樣會遇到內存泄漏問題。有內存泄漏問題的程序會不斷的申請內存,但不去釋放,這會導致進程的堆區越來越大直到進程被操作系統 Kill 掉,在 Linux 系統中這就是有名的 OOM 機制,Out Of Memory Killer。

幸好,有專門的工具來檢測內存泄漏出在了哪里,像valgrind、gperftools等。內存泄漏是一個很有意思的問題,對于那些運行時間很短的程序來說,內存泄漏根本就不是事兒,因為對現代操作系統來說,進程退出后操作系統回收其所有內存,這就是意味著對于這類程序即使有內存泄漏也就是發生在短時間內,甚至你根本就察覺不出來。但是對于服務器一類需要長時間運行的程序來說內存泄漏問題就比較嚴重了,內存泄漏將會影響系統性能最終導致進程被 OOM 殺掉,對于一些關鍵的程序來說,進程退出就意味著收入損失,特別是在節假日等重要節點出現內存泄漏的話,那么肯定又有一批程序員要被問責了。

 

引用已被釋放的內存

  1. void add() { 
  2.   int* a = (int*)malloc(sizeof(int)); 
  3.   ... 
  4.   free(a); 
  5.   int* b = (int*)malloc(sizeof(int)); 
  6.   *b = *a; 

這段代碼在堆區申請了一塊內存裝入整數,之后釋放,可是在后續代碼中又再一次引用了被釋放的內存塊,此時a指向的內存保存什么內容取決于malloc 內部的工作狀態:

指針a指向的那塊內存釋放后沒有被 malloc 再次分配出去,那么此時a指向的值和之前一樣

指針a指向的那塊內存已經被 malloc分配出去了,此時a指向的內存可能已經被覆蓋,那么*b得到的就是一個被覆蓋掉的數據,這類問題可能要等程序運行很久才會發現,而且往往難以定位。

 

循環遍歷是0開始的

  1. void init(int n) { 
  2.   int* arr = (int*)malloc(n * sizeof(int)); 
  3.   for (int i = 0; i <= n; i++) { 
  4.       arr[i] = i; 
  5.   } 

這段代碼的本意是要初始化數組,但忘記了數組遍歷是從 0 開始的,實際上述代碼執行了 n+1 次賦值操作,同時將數組 arr 之后的內存用 i 覆蓋掉了。這同樣取決于 malloc 的工作狀態,如果 malloc 給到 arr 的內存本身比n*sizeof(int)要大,那么覆蓋掉這塊內存可能也不會有什么問題,但如果覆蓋的這塊內存中保存有 malloc 用于維護內存分配信息的話,那么此舉將破壞 malloc 的工作狀態。

 

指針大小與指針所指向對象的大小不同

  1. int **create(int n) { 
  2. int i; 
  3. int **M = (int **)malloc(n * sizeof(int)); 
  4.  
  5. for (i = 0; i < n; i++) 
  6.   M[i] = (int *)malloc(m * sizeof(int)); 
  7.     
  8. return M; 

這段代碼的本意是要創建一個n*n二維數組,但其錯誤出現在了第3行,應該是 sizeof(int *) 而不是sizeof(int),實際上這行代碼創建了一個包含有 n 個 int 的數組,而不是包含 n 個 int 指針的數組。但有趣的是,這行代碼在int和int*大小相同的系統上可以正常運行,但是對于int指針比int要大的系統來說,上述代碼同樣會覆蓋掉數組M之后的一部分內存,這里和上一個例子類似,如果這部分內存是 malloc 用來保存內存分配信息用的,那么也許當釋放這段內存時才會出現運行時異常,此時可能已經距離出現問題的那行代碼很遠了,這類 bug 同樣難以排查。

棧緩沖器溢出

  1. void buffer_overflow() { 
  2. char buf[32]; 
  3.  
  4. gets(buf); 
  5. return

上面這段代碼總是假定用戶的輸入不過超過 32 字節,一旦超過后,那么將立刻破壞棧幀中相鄰的數據,破壞函數棧幀最好的結果是程序立刻crash,否則和前面的例子一樣,也許程序運行很長一段時間后才出現錯誤,或者程序根本就不會有運行時異常但是會給出錯誤的計算結果。實際上在上面幾個例子中也會有“溢出”,不過是在堆區上的溢出,但棧緩沖器溢出更容易導致問題,因為棧幀中保存有函數返回地址等重要信息,一類經典的黑客攻擊技術就是利用棧緩沖區溢出,其原理也非常簡單。原來,每個函數運行時在棧區都會存在一段棧幀,棧幀中保存有函數返回地址,在正常情況下,一個函數運行完成后會根據棧幀中保存的返回地址跳轉到上一個函數,假設函數A調用函數B,那么當函數B運行完成后就會返回函數A,這個過程如圖所示:

你可以在《函數運行時在內存中是什么樣子》這篇文章中找到關于函數運行時棧幀的詳細講解。但如果代碼中存在棧緩沖區溢出問題,那么在黑客的精心設計下,溢出的部分會“恰好”覆蓋掉棧幀中的返回地址,將其修改為一個特定的地址,這個特定的地址中保存有黑客留下的惡意代碼,如圖所示:

這樣當該進程運行起來后實際上是在執行黑客的惡意代碼,這就是利用緩沖區溢出進行攻擊的一個經典案例。

 

操作指針所指對象而非指針本身

  1. void delete_one(int** arr, intsize) { 
  2.   free(arr[*size - 1]); 
  3.   *size--; 

arr 是一個指針數組,這段代碼的本意是要刪除掉數組中最后一個元素,同時將數組的大小減一。但上述代碼的問題在于*和--有相同的優先級,該代碼實際上會將 size 指針減1而不是把 size 指向的值減1。如果你足夠幸運的話那么上述程序運行到*size--時立刻 crash,這樣你就有機會快速發現問題。但更有可能的是上述代碼會看上去一切正常的繼續運行并返回一個錯誤的執行結果,這樣的bug排查起來會讓你終生難忘,因此當不確定優先級時不要吝嗇括號,加上它。

總結

 

內存是計算機系統中至關重要的一個組成部分,C/C++這類偏底層的語言在帶來高性能的同事也帶來內存相關的無盡問題,而這類問題通常難以排查,不過知彼知己,當你理解了常見的內存相關問題后將極大減少出現此類問題的概率。希望這篇文章對大家理解內存與指針有所幫助。

本文轉載自微信公眾號「碼農的荒島求生」,可以通過以下二維碼關注。轉載本文請聯系碼農的荒島求生公眾號。

 

責任編輯:武曉燕 來源: 碼農的荒島求生
相關推薦

2022-03-08 13:08:45

數據庫異構數據庫

2021-04-27 07:52:19

C++promisefuture

2015-05-27 09:50:17

碼農程序員

2021-11-04 11:54:30

Linux內存系統

2020-10-29 09:06:56

開發工具技術

2024-03-12 10:02:31

Python內存編程

2019-05-16 09:50:39

負載均衡高可用數據

2014-11-21 10:46:56

Java開源項目

2022-03-21 14:09:19

面試C語言代碼

2021-03-22 16:55:14

Java程序員內存

2025-07-15 09:50:29

Python編程技巧圖像處理

2019-10-18 12:57:38

邊緣計算云計算安全

2025-01-16 16:16:53

2012-02-20 11:33:29

Java

2019-11-22 09:30:59

設計Java程序員

2020-04-07 08:51:25

CCNP協議網絡協議路由

2023-11-23 10:21:37

2023-12-15 10:42:05

2022-12-26 08:25:16

JavaScriptweb瀏覽器

2019-08-27 08:02:03

Linux內存占用命令
點贊
收藏

51CTO技術棧公眾號

欧美一级特黄aaa| 国产精品入口麻豆九色| 欧美日韩免费看| 日韩在线观看免费全| 亚洲 欧美 日韩 国产综合 在线| 91麻豆成人精品国产| 亚洲精品国产动漫| 亚洲综合999| 国产在线98福利播放视频| 波多野结衣 在线| av资源中文在线| 欧美成人一品| 日韩午夜中文字幕| 秋霞在线一区二区| 91精品国产乱码久久久| 日韩五码在线| 日韩成人在线电影网| 欧美一级免费播放| 刘亦菲毛片一区二区三区| 欧美91大片| 亚洲欧美国内爽妇网| a√天堂在线观看| 日本一本草久在线中文| 国产精品毛片在线| 日韩黄色高清视频| www激情五月| 黄色免费在线观看网站| 韩国午夜理伦三级不卡影院| 精品国产拍在线观看| 中文字幕在线播放视频| 成人免费网站观看| www.亚洲色图| 69精品小视频| 亚洲区免费视频| 三级欧美日韩| 亚洲va欧美va天堂v国产综合| 国产精品久久久久久久天堂第1集| 国产免费无码一区二区视频| 亚洲国产中文在线二区三区免| 一区二区三区在线观看国产| 国产99视频精品免费视频36| 一级片免费网址| 欧美热在线视频精品999| 91成人在线精品| 好看的日韩精品| 国产熟妇一区二区三区四区| 日韩精品第一区| 91精品国产综合久久福利| 毛片av在线播放| 天天操天天射天天| 日本中文一区二区三区| 久久久www成人免费精品张筱雨| 国产精品中文久久久久久| 俺来俺也去www色在线观看| 91视频在线观看免费| 国产日韩欧美影视| 中国女人真人一级毛片| 一区二区三区在线电影| 日韩电视剧在线观看免费网站| 免费在线观看日韩av| av资源亚洲| 中文字幕一区二区三区不卡在线| 国产精品久久久久久久免费大片 | 国产成人激情小视频| 在哪里可以看毛片| 美女毛片一区二区三区四区| 亚洲精品自在久久| 国产又粗又猛又爽视频| 国产精品免费精品自在线观看| 亚洲h精品动漫在线观看| 国产情侣第一页| 成人p站proumb入口| 丁香啪啪综合成人亚洲小说| 国产精品久久久久久久久借妻| 麻豆成人在线视频| 欧美在线色图| 亚洲国产欧美一区二区三区同亚洲| 欧美午夜性生活| 欧美videosex性欧美黑吊| 国产欧美一区二区三区网站| 91蜜桃网站免费观看| 人人妻人人爽人人澡人人精品| 国产综合欧美| 另类色图亚洲色图| 丰满的亚洲女人毛茸茸| 国产精品调教视频| 欧美日韩aaaaa| 日本www高清视频| 超级碰碰不卡在线视频| 五月综合激情网| 欧美精品一区二区三区免费播放| 另类一区二区三区| 色一情一乱一乱一91av| 日韩精品视频在线观看视频| 欧美jizzhd69巨大| 国产欧美日本一区视频| 中文字幕av日韩精品| 成人资源www网在线最新版| 亚洲天堂av老司机| 亚洲一区二区三区涩| 国产小视频在线播放| 99精品偷自拍| 国内精品视频在线播放| 黄色一级大片在线免费看国产一| 91丨porny丨在线| 国产成年人在线观看| av手机在线观看| 884aa四虎影成人精品一区| aaa毛片在线观看| 精品久久久久久久久久岛国gif| 欧美三级欧美一级| 国产成人黄色网址| 日本在线视频一区二区| 91福利在线看| 国产艳妇疯狂做爰视频| 国产精品22p| 一区二区av在线| 后入内射无码人妻一区| 99精品小视频| 日日噜噜噜夜夜爽亚洲精品| 99热国产在线观看| 国产一区二区导航在线播放| 亚洲一区二区三区在线视频 | 日韩激情在线观看| 日韩av免费在线观看| 四虎精品永久在线| 久久亚洲欧洲| 国产精品旅馆在线| 伊人久久一区二区| 91麻豆视频网站| 国产一二三区在线播放| 婷婷久久免费视频| 日韩一区二区在线免费观看| 无码一区二区三区在线| 亚洲精品专区| 国产精品444| 色网站免费观看| 一区二区在线观看免费| 在线观看亚洲色图| 欧美成人一级| 精品久久久999| 亚洲一区中文字幕永久在线| 国产麻豆日韩欧美久久| 精品国产一区二区三区免费 | 亚洲乱码精品一二三四区日韩在线| 自拍视频一区二区三区| 国产在线|日韩| 亚洲香蕉av在线一区二区三区| 国产黄色片在线| 欧美在线首页| 91色视频在线导航| 亚州精品国产精品乱码不99按摩| 国产亚洲福利社区一区| 一区二区高清视频| 99久久婷婷国产综合精品首页| 91麻豆精品国产91久久久资源速度 | 中文字幕在线看片| 欧美日韩在线精品一区二区三区激情 | 成人av免费在线观看| 欧美人与性禽动交精品| 黄色网页网址在线免费| 在线观看亚洲专区| 成人在线观看免费高清| 免费不卡在线观看| 久久精品中文字幕一区二区三区| 在线播放麻豆| 午夜精品一区二区三区电影天堂 | 国产精华7777777| 国产乱理伦片在线观看夜一区| 亚洲精品天堂成人片av在线播放| 日韩三级av高清片| 97超碰国产精品女人人人爽 | 亚洲综合网av| 亚洲三级电影网站| 深夜视频在线观看| 免费在线观看成人av| 91在线观看免费观看| 色爱综合区网| 欧美男生操女生| 人妻aⅴ无码一区二区三区| 久久久久国产精品| 欧美在线视频a| 亚洲乱熟女一区二区| 欧美日韩亚洲一区二区| 神马久久久久久久久久久| 精品一区二区三区欧美| 日产精品一线二线三线芒果| av不卡在线免费观看| 美女视频在线免费| 91麻豆精品91久久久久同性| 久草资源在线视频| 久久综合九色综合欧美98| 日韩中文字幕亚洲精品欧美| 99精品在免费线偷拍| 久久综合伊人77777| 国产成人三级在线观看视频| 日韩欧美中文字幕在线播放| 白嫩情侣偷拍呻吟刺激| 欧美精品97| 2022国产精品| 大胆人体一区| 欧美猛男性生活免费| 国产精品视频a| 国产精品久久久久aaaa| 99久久久无码国产精品性波多| 老司机亚洲精品| 国产片侵犯亲女视频播放| 国产成人ay| 人人澡人人澡人人看欧美| 欧美一级二级三级区| 亚洲精品福利视频| 亚洲一区精品在线观看| 欧美午夜精品在线| 中文字幕av免费在线观看| 久久综合久久综合亚洲| 91丨porny丨九色| 欧美私人啪啪vps| 婷婷久久青草热一区二区 | 凹凸成人精品亚洲精品密奴| 丁香五月网久久综合| 色婷婷成人网| 国产精品久久久久久久午夜| 成人三级高清视频在线看| 欧美精品免费在线| 精品人妻少妇AV无码专区| 一级精品视频在线观看宜春院| 国产美女免费无遮挡| 成人爱爱电影网址| 熟妇无码乱子成人精品| 久久精品国产精品青草| 男人的天堂视频在线| 精品少妇av| 成人疯狂猛交xxx| 3d玉蒲团在线观看| 亚洲精品在线三区| 天天做天天爱夜夜爽| 国产日韩综合av| 北岛玲一区二区| 成人免费三级在线| 丰满少妇中文字幕| 国产精品亚洲综合一区在线观看| 99re精彩视频| 麻豆精品一区二区| 老司机午夜性大片| 黑丝一区二区| 成年人视频大全| 夜间精品视频| av不卡在线免费观看| 亚洲大全视频| 日韩不卡视频一区二区| 亚洲国产一区二区三区在线播放| 中文字幕一区二区三区在线乱码 | 日本a在线免费观看| 精品91在线| 欧美一区1区三区3区公司| julia一区二区三区中文字幕| 日本精品性网站在线观看| 忘忧草在线影院两性视频| 欧美孕妇毛茸茸xxxx| 免费在线观看黄色| 最近2019中文字幕一页二页| 日本免费不卡视频| 欧美日韩国产高清一区二区| 一级片在线观看视频| 欧美高清激情brazzers| 99精品人妻无码专区在线视频区| 欧美性xxxx在线播放| 国产成人精品网| 一本久道中文字幕精品亚洲嫩| 免费看毛片网站| 亚洲已满18点击进入久久| 亚洲不卡的av| 中文字幕日韩一区二区| 成人性生交大免费看| 国产亲近乱来精品视频| av最新在线观看| 国产视频一区在线播放| 九一在线免费观看| 亚洲人午夜精品天堂一二香蕉| 欧美国产在线看| 日韩欧美在线视频日韩欧美在线视频| 中国女人一级一次看片| 日韩午夜激情电影| 五月婷中文字幕| 中文字幕日韩精品有码视频| 欧美美女搞黄| 亚洲精品二三区| 国产女人在线观看| 亚洲精选中文字幕| 91啦中文在线| 亚洲最新av在线网站| 成年人黄视频在线观看| 久久精品青青大伊人av| 福利成人导航| 国产精品视频资源| 外国电影一区二区| 99视频免费观看蜜桃视频| 久久九九精品视频| 麻豆传媒一区二区| 欧美理伦片在线播放| 国产精品日本一区二区| 精品国产精品| 国产欧美日韩小视频| 麻豆国产精品一区二区三区 | 久久久久久久香蕉网| 国产网友自拍视频导航网站在线观看 | 免费观看av网站| 91色乱码一区二区三区| 日本一级片免费| 日韩欧美高清视频| av天堂一区二区三区| 欧美一级电影网站| 蜜桃视频在线观看网站| 欧美高清在线观看| 成人性生交大片免费看网站| 国产九九精品视频| 亚洲最好看的视频| youjizz.com在线观看| 美女视频黄免费的久久| 人妻无码一区二区三区| 久久精品在这里| 日韩免费成人av| 亚洲6080在线| 国产欧美一级片| 色yeye香蕉凹凸一区二区av| 自拍偷拍亚洲视频| 国产欧美一区二区在线播放| 欧美激情成人在线| 日韩av.com| 国产精品色眯眯| 极品国产91在线网站| 亚洲国语精品自产拍在线观看| 好了av在线| 成人自拍性视频| 欧美激情国产在线| 女人床在线观看| 精品一区二区免费看| 美国黑人一级大黄| 日本高清免费不卡视频| 嫩草研究院在线观看| 欧美亚洲免费电影| 亚洲免费专区| 日韩欧美在线播放视频| 蜜臀久久99精品久久久久久9| 国产精品亚洲无码| 日韩欧美第一页| 久久精品蜜桃| 国产成人高潮免费观看精品| 国产一区二区三区四区五区传媒| 日本a级片免费观看| 91免费视频大全| 欧美男人亚洲天堂| 亚洲欧洲日产国码av系列天堂| 男人天堂久久久| 国产日本欧美在线观看| 91综合在线| 日韩视频在线观看一区二区三区| 18欧美亚洲精品| 国产三级按摩推拿按摩| 欧美理论电影在线观看| 中文一区二区三区四区| 日韩 欧美 视频| 91影院在线免费观看| 三级视频在线观看| 国产亚洲精品高潮| 四虎影视国产精品| 人妻无码一区二区三区四区| a美女胸又www黄视频久久| 亚洲欧美精品一区二区三区| 国产小视频国产精品| 久久电影天堂| 91麻豆天美传媒在线| 天堂av在线一区| 日韩视频在线观看免费视频| 欧美日韩另类一区| 尤物在线网址| 蜜桃导航-精品导航| 麻豆精品一区二区综合av| 粉嫩av性色av蜜臀av网站| 天天综合日日夜夜精品| 国产高清免费在线观看| 久久免费视频在线| 麻豆精品久久| 欧美日韩成人免费视频| 国产拍揄自揄精品视频麻豆| 国产日韩在线观看一区| 97超碰蝌蚪网人人做人人爽 | 国产亚洲精品一区二区| 国产精品第一国产精品| 国产乱子伦精品无码专区| 国产偷v国产偷v亚洲高清| av小说天堂网| 青草成人免费视频| 91不卡在线观看| 香蕉视频黄色在线观看| 欧美精品乱码久久久久久按摩| av蜜臀在线| 一本二本三本亚洲码| 久久伊99综合婷婷久久伊| 91激情在线观看|