青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
我的編程樂園
積累,堅持!
---------我是一只IT小小鳥
首頁
新隨筆
聯系
聚合
管理
隨筆-145 評論-173 文章-70 trackbacks-0
【歡迎各位留言討論】C++中運算符New的一個疑問【新的問題!】【各位繼續關注討論啊!】
最近突然發現自己曾經建立的C++體系出現了很多漏洞,對很多問題都產生了疑問,不知道自己是鉆了牛角尖還是探究C++的底層或者細節,不過既然碰到了,就解決之吧,或許在某一天之后,會驚奇的發現,原來自己的這些問題會出現某天的筆試或者工作中呢。
言歸正傳,這個問題是關于new操作符的。今天在完成C++作業的時候,需要自己實現一個strlen來,其實就是調用C語言函數就可以,不過我突發奇想,寫下了下面的這個代碼:
code 1:
1
#include
<
iostream
>
2
using
namespace
std;
3
4
int
main()
5
{
6
char
*
str
=
new
char
[
4
];
7
strcpy(str,
"
fjifejfief
"
);
8
cout
<<
str
<<
endl;
9
}
code 2:
1
#include
<
iostream
>
2
using
namespace
std;
3
4
int
main()
5
{
6
char
*
str
=
new
char
[
5
];
7
strcpy(str,
"
Good
"
);
8
strcat(str,
"
I Love C++
"
);
9
cout
<<
str
<<
endl;
10
}
上面的兩個代碼都是用到了new操作符,動態分配了一個固定的存儲空間,OK。
然后通過strcpy來實現賦值,從而將原來的那個分配的區域填充。可是在1和2中都有一個問題,那就是,填充的字符串超過了動態分配的大小,在code1中,實際分配的只有4個字節,而自己拷貝過去的確有10個字節(不含null),而code2中,首先初始化的時候沒有問題,后面的連接函數也是。為何我會產生這個問題呢?
因為曾經在《C++ Primer》一書中講到,當進行字符串操作的時候,需要特別注意到那個null要占用一個空間,而對于strcat和其他函數,特別要注意是否超過表示的范圍,而我自己曾經碰到過這個問題,所以比較疑惑,上面的那個沒有溢出嗎?為何可以輸出正確的結果呢?
下面,列出個錯誤的例子來看看:
code3
1
#include
<
iostream
>
2
using
namespace
std;
3
4
int
main()
5
{
6
char
str[
4
]
=
"
goo
"
;
7
cout
<<
str
<<
endl;
8
strcat(str,
"
sfsfefe
"
);
9
cout
<<
str
<<
endl;
10
return
0
;
11
}
明顯code3會出錯(剛開始的時候居然沒有出錯,后來程序才崩潰的,以為靈異事件呢。),固定分配的數組的話,需要特別注意像strcat函數,因為這種連接函數就可能超過范圍,發生錯誤。
ok:
匯總如下:固定分配的時候,不能夠超過數組的范圍,而且字符串的話需要注意總是有一個null在其中的,所以大小要自己把握好。
但是,對于new動態分配的話,可以超過范圍,不管是strcat還是直接在分配的時候超過范圍都可以,Why?
============================================================================================================
經過網友留言匯總,同時自己測試,發現了一些新的問題,也有了新的體會! Version 1
============================================================================================================
留言匯總(解答):
經過和網友的討論,我初步了解了錯誤可能的原因,現羅列如下,如有遺漏和錯誤,還望各位指教。
1.兩者的分配方式不同。使用關鍵字new操作符分配的話,分配的空間是在堆當中(heap),而直接使用數組的話,分配的空間在堆棧中(stack)。
2.操作。對于堆棧的溢出,由于變量的填充時按照從高地址到低地址的方式,所以,溢出的話會修改函數的返回值,造成運行的錯誤。而對于堆分配的話,這里即使溢出了,由于沒有對它進行進一步操作,所以沒有出現問題。
3
.我的一點理解。對于堆棧溢出的錯誤,我想大家都知道了,可是上面的這個堆溢出的話,好像即使有錯誤也沒有什么問題。我嘗試了使用
delete []str,或者是輸出str[8]等單元,都是顯示正確的結果,也沒有出現錯誤。所以懷疑的是,難道堆上的這種分配這么安全,那我delete的話,到底是刪除的分配的4個字節,還是拷貝過去的溢出的那個超過4個字節的那么多單元內容呢?我的理解是,堆上分配的單元由于太隨意,靈活性太強,所以對于錯誤的發生就可能性很小。
4.
我寫的調試代碼的一個新的問題:
1
#include
<
iostream
>
2
using
namespace
std;
3
4
int
main()
5
{
6
char
*
str1
=
new
char
[
4
];
7
str1
=
"
sfe
"
;
//如果去掉這一行,那么程序就可以正常運行了……可是這個僅僅是初始化指針的啊。
8
char
str2[
4
]
=
"
adf
"
;
9
cout
<<
"
賦值前:
"
<<
endl;
10
cout
<<
"
str1指向:
"
<<&
str1
<<
endl;
11
cout
<<
"
str1內容:
"
<<
str1
<<
endl;
12
cout
<<
"
str2指向:
"
<<&
str2
<<
endl;
13
cout
<<
"
str2內容:
"
<<
str2
<<
endl;
14
strcpy(str2,
"
ooo
"
);
15
cout
<<
"
str2先賦值后:
"
<<
endl;
16
cout
<<
"
str1指向:
"
<<&
str1
<<
endl;
17
cout
<<
"
str1內容:
"
<<
str1
<<
endl;
18
cout
<<
"
str2指向:
"
<<&
str2
<<
endl;
19
cout
<<
"
str2內容:
"
<<
str2
<<
endl;
20
strcpy(str1,
"
iiiiii
"
);
21
cout
<<
"
str1后賦值后:
"
<<
endl;
22
cout
<<
"
str1指向:
"
<<&
str1
<<
endl;
23
cout
<<
"
str1內容:
"
<<
str1
<<
endl;
24
cout
<<
"
str2指向:
"
<<&
str2
<<
endl;
25
cout
<<
"
str2內容:
"
<<
str2
<<
endl;
26
27
}
28
程序在運行一半后崩潰,典型的溢出了。但是,此代碼如果去掉上面初始化的那一行,程序就沒有錯誤,而且我這里還計算發現對于堆棧的話沒有任何錯誤,而堆的話故意寫了個溢出的賦值,就是下面strcpy(str1,"iiiiii");
此時加上初始化的代碼后,問題就來了,上個截圖。
從錯誤的信息來看,
就是指向到 strcpy(str1,"iiiiii")的時候出錯了的。
這個說明:在我沒有對堆上的變量初始化的時候,如果越界了,沒有發現出錯(它會自動擴展那個大小嗎?)。
而如果我對堆上的變量初始化的話,那么,再次復制的時候,如果越界了,就會發生錯誤!
各位,知道為什么嗎?(
問題好像更明朗了些,而且好像更深入了些。當然,鉆這個牛角尖或許沒有必要!)
posted on 2010-01-13 23:14
deercoder
閱讀(2223)
評論(23)
編輯
收藏
引用
評論:
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問[未登錄] 2010-01-14 00:54 |
Steven
你需要去了解下 堆(stack) 和 棧(heap) 的區別.
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 02:06 |
陳梓瀚(vczh)
因為new的時候,系統可以選擇多給你幾個字節,而且這并不是固定的數字。
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 02:20 |
OwnWaterloo
1. 在C/C++代碼正確且C/C++實現(編譯器,運行庫)正確的情況下, C/C++語言保證得到正確的結果。
如果出現了錯誤的結果, 可以問why。
是"C/C++代碼正確"這個假設有誤? 還是"C/C++實現正確"這個假設有誤?
2. 如果C/C++代碼本身有某種錯誤, C/C++實現不保證得到正確的結果, 也不保證得到錯誤的結果, 更不保證會報告錯誤的結果。
代碼的錯誤有可能會被隱藏, 到其他時候發作。
這時候, 詢問"為什么沒有出現錯誤", 是不明智的。
C/C++實現沒有義務保證產生一個錯誤。
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 09:22 |
bluegene
我是這樣理解的,你用 new 分配的空間是放在堆(heap)里的,超出了的空間如果不被其它數據覆蓋暫時是沒有問題的。固定分配的時候是在棧(stack)里分配的,其空間肯定是不能益處的。
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 10:26 |
飯中淹
new分配的在堆里,你溢出了,只會導致堆出問題。而你下面又沒有再使用堆,所以不會出錯。
直接寫的局部變量,分配在堆棧里,堆棧里有函數的返回地址,所以溢出了,覆蓋了返回地址,函數執行完就出錯了。
另外,有些 編譯器會生成對固定長度數組的保護性檢測代碼,一旦溢出,就會彈出提示。早先在vs2003還是vs2002的時候見過。
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 10:27 |
zuhd
對于堆來講,生長方向是向上的,也就是向著內存地址增加的方向;對于棧來講,它的生長方向是向下的,是向著內存地址減小的方向增長。看下反匯編代碼一切都明白了
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 10:31 |
zuhd
棧里有函數的返回地址,所以溢出了,覆蓋了返回地址,函數執行完就出錯了。
==========================================
這句話是重點,當ret的時候,call下條指令時異常了,如果你多定義了幾個變量,讓棧溢出不到函數的返回地址,錯誤依然不會出現的
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問[未登錄] 2010-01-14 12:43 |
vane
出錯是必然的,沒問題的時候你比較幸運。
#include <iostream>
using namespace std;
#pragma pack(push)
#pragma pack(1)
int main()
{
char *str = new char[5];
strcpy(str,"Good");
strcat(str,"I Love C++");
cout << str << endl;
}
#pragma pack(pop)
你可以這么試一下
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 15:53 |
壞人
越界,后果自負。
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 15:57 |
turygo
數組越界都是這樣的,錯誤不是立刻出現,而是不知道什么時候就出問題了,而且到那個時候代碼量一大,你根本無從找起錯誤。
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 17:30 |
零宇
建議樓主補充一下基礎知識
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 19:22 |
besterChen
LZ遇到的問題是堆和棧溢出的問題,您說的可能是靈異事件是因為程序對棧和堆檢查導致的。
不知道LZ用的是什么開發環境。我學習C語言也剛好學到這里,自己在VC6得開發環境下仔細調試過其過程并做了筆記,地址:
http://www.shnenglu.com/besterChen/archive/2010/01/13/105538.html
希望能對樓主有幫助,由于自己也是初學,希望LZ能多多指正日志中的錯誤……
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 22:30 |
wildpointer
這種越界的事,你知道會錯還用。
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 23:21 |
劉暢
@Steven
好的,謝謝。我覺得也應該是這方面的問題。
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 23:22 |
劉暢
@陳梓瀚(vczh)
可是多出來的字節是無法預知的啊。而且如果太多的話還是會溢出的吧。
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 23:25 |
劉暢
@bluegene
謝謝,之前一直覺得和內存的分配有關,堆棧和堆確實不大一樣。
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 23:27 |
劉暢
@飯中淹
@zuhd
謝謝你們的精彩解釋,受益匪淺。
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 23:29 |
劉暢
@besterChen
呵呵,一起學習!
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-14 23:29 |
劉暢
@零宇
好的,謝謝!
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-15 00:05 |
Benjamin
strcpy等在一些公司的編碼規范中是禁用的。
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問 2010-01-15 00:55 |
空明流轉
bushuoshale...
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問[未登錄] 2010-01-15 09:47 |
Steven
@劉暢
呵呵,我把堆和棧的英文寫反了。。。
以前寫C 程序的時候經常用到大量的 strcopy, strcat之類的函數,偶爾出錯是在所難免的,只要是人總是有算錯的時候,尤其有些時候混合處理unicode和ansi串的時候,算字符串長度是容易出錯的。
所以后來寫 C++ 的時候我盡量避免去使用這類函數了,而是傾向于用 stl的string wstring, 盡量用 stl的容器類去代替自己分配管理內存。
代碼規模大到一定程度,除了緩沖溢出實在是很難找。
順便說下,
http://www.coverity.com/products/static-analysis.html
這個東西很強大,可以檢測到你代碼里潛在的溢出問題。
回復
更多評論
#
re: 【歡迎各位留言討論】C++中運算符New的一個疑問
2010-01-15 12:43 |
劉暢
@Steven
謝謝,去看看,學習了……
回復
更多評論
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
堅持記錄,筆耕不輟,筆記是最好的學習方法!
<
2010年2月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(12)
給我留言
查看公開留言
查看私人留言
隨筆分類
(87)
ACM(1)
Android(4)
C++(7)
CTeX和LateX(1)
Git(3)
Java(4)
MFC程序設計入門(8)
OpenCV(1)
Python(3)
Shell/Bash(1)
SQL(1)
Unix/Linux(23)
Vim(3)
大學公開課(3)
讀書(4)
環境配置(1)
生活感悟/日記(18)
圖像識別算法及原理(1)
隨筆檔案
(145)
2014年12月 (1)
2013年3月 (1)
2012年7月 (2)
2012年6月 (5)
2012年5月 (2)
2012年4月 (2)
2011年12月 (1)
2011年11月 (2)
2011年10月 (8)
2011年9月 (2)
2011年8月 (4)
2011年6月 (2)
2011年5月 (5)
2011年4月 (3)
2011年3月 (3)
2010年6月 (5)
2010年5月 (5)
2010年4月 (3)
2010年3月 (16)
2010年2月 (56)
2010年1月 (11)
2009年12月 (2)
2009年11月 (3)
2009年10月 (1)
文章分類
(70)
C/C++(14)
JAVA(6)
Linux/Unix(6)
MFC(5)
OpenCV / OpenGL(6)
編程體會和收獲(3)
常見編譯器錯誤解決辦法(5)
深入理解計算機系統(2)
生活的體會和感悟(5)
實習/讀研(1)
數據結構和算法分析(9)
雜談(8)
文章檔案
(70)
2011年11月 (1)
2011年10月 (1)
2010年3月 (8)
2010年2月 (2)
2010年1月 (3)
2009年12月 (21)
2009年11月 (26)
2009年10月 (5)
2009年9月 (3)
相冊
computer picture
ACM與算法比賽
Google Code Jam
Top Coder
北大ACM
杭電ACM
LaTex和Tex學習
LaTex and Tex
Tex,LaTex,CTex學習
電子書下載
不錯的電子書免注冊下載
雜志下載(經濟學人等)
聯系方式
我的豆瓣主頁
學習論壇
C++編程
VC知識庫
超多C/C++資料和源碼下載
科研小木蟲
提問必答網站(牛人輩出啊!)
英語網站(長期學習)
New York Times
華爾街日報
記單詞,捐大米
經濟學英文網
普特網站
普特英語應用(有趣的學習)
譯言網|譯文庫
中國日報
源碼網站
codeproject
google代碼搜索
programersheaven
sourceforge
程序員聯合開發網
最新隨筆
1.?此博客停止更新
2.?Adboe Reader提示中文字體有問題
3.?Python字符串換行處理
4.?如何轉換^M行末符號
5.?斯坦福大學開放課程--編程范式(四)
搜索
積分與排名
積分 - 908977
排名 - 15
最新隨筆
1.?此博客停止更新
2.?Adboe Reader提示中文字體有問題
3.?Python字符串換行處理
4.?如何轉換^M行末符號
5.?斯坦福大學開放課程--編程范式(四)
最新評論
1.?re: Git Stash用法[未登錄]
@陳梓瀚(vczh)
人稱輪帶逛!!!
--q
2.?re: Git Stash用法
@Loaden
這個B裝的好
--doubi
3.?re: Chrome神器Vimium快捷鍵學習記錄
哦啦啦啦啦
--阿里河
4.?re: Chrome神器Vimium快捷鍵學習記錄
希望能添加更新后的功能翻譯
--Vi.Ci
5.?re: Chrome神器Vimium快捷鍵學習記錄
@coolbit
謝謝,學會了
--xin
閱讀排行榜
1.?Git Stash用法(300842)
2.?Chrome神器Vimium快捷鍵學習記錄(67623)
3.?GitHub使用簡介(35390)
4.?Ubuntu下硬盤的自動掛載(23819)
5.?Ubuntu更新包管理器失敗:Requires installation of untrusted packages問題解決(18564)
評論排行榜
1.?【歡迎各位留言討論】C++中運算符New的一個疑問【新的問題!】【各位繼續關注討論啊!】(23)
2.?Git Stash用法(21)
3.?Chrome神器Vimium快捷鍵學習記錄(19)
4.?C++友元的一個問題-----------由派生類訪問基類的私有成員(10)
5.?OpenCV學習筆記(一)(7)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 deercoder
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
欧美国产综合视频
|
一区二区高清
|
六月天综合网
|
亚洲精品午夜精品
|
亚洲国产日本
|
欧美福利专区
|
亚洲自拍偷拍一区
|
亚洲免费伊人电影在线观看av
|
欧美日韩国产一级片
|
国产精品99久久久久久人
|
国产亚洲欧美一区在线观看
|
午夜精品久久久久久久
|
欧美在线观看天堂一区二区三区
|
黄色一区三区
|
亚洲精品中文字幕女同
|
国产精品嫩草影院一区二区
|
欧美中文在线观看
|
农夫在线精品视频免费观看
|
亚洲欧美成人一区二区在线电影
|
亚洲免费在线视频
|
亚洲国产另类久久精品
|
在线性视频日韩欧美
|
国语对白精品一区二区
|
亚洲激情社区
|
国产丝袜美腿一区二区三区
|
欧美激情亚洲视频
|
国产精品一区二区在线观看不卡
|
久久频这里精品99香蕉
|
欧美片网站免费
|
久久精品国产一区二区三区免费看
|
蜜臀99久久精品久久久久久软件
|
亚洲婷婷综合色高清在线
|
欧美高清在线播放
|
欧美日韩一区二区在线播放
|
久久精品人人做人人爽
|
欧美精品一区二区三区在线播放
|
午夜在线电影亚洲一区
|
欧美国产欧美综合
|
国内激情久久
|
宅男噜噜噜66一区二区66
|
亚洲国产成人精品久久
|
亚洲一区二区3
|
亚洲日本中文字幕区
|
欧美在线免费观看
|
亚洲一区二区免费
|
久久久亚洲人
|
久久免费视频网站
|
国产精品无码永久免费888
|
亚洲国产免费看
|
黄色精品在线看
|
午夜国产欧美理论在线播放
|
亚洲深夜福利网站
|
欧美大色视频
|
欧美高清自拍一区
|
1024国产精品
|
久久嫩草精品久久久久
|
欧美亚洲三区
|
国产精品网站在线观看
|
在线视频一区二区
|
亚洲免费一在线
|
欧美日韩精品二区
|
亚洲免费观看高清在线观看
|
亚洲三级网站
|
欧美人与性禽动交情品
|
亚洲国产免费
|
日韩视频在线播放
|
欧美激情一区二区三区不卡
|
亚洲国产高清一区
|
日韩一级在线观看
|
欧美精品网站
|
国产精品99久久99久久久二8
|
艳妇臀荡乳欲伦亚洲一区
|
欧美精品一区二区在线播放
|
欧美激情一区二区三级高清视频
|
国产精品久久中文
|
亚洲一区二区三区免费在线观看
|
亚洲欧美日韩电影
|
国产欧美一区二区精品秋霞影院
|
亚洲欧美一区二区激情
|
欧美一区二区久久久
|
国产日韩欧美一区在线
|
久久国产精品久久久久久久久久
|
老司机午夜精品视频
|
136国产福利精品导航网址
|
免费短视频成人日韩
|
亚洲三级电影在线观看
|
狠狠色综合网
|
鲁大师影院一区二区三区
|
亚洲高清不卡在线
|
亚洲一区二区三区高清不卡
|
国产精品视频专区
|
久久都是精品
|
亚洲激情视频网
|
香蕉亚洲视频
|
精品动漫3d一区二区三区免费版
|
欧美大尺度在线观看
|
99伊人成综合
|
久久在精品线影院精品国产
|
亚洲国产另类久久精品
|
欧美视频一区二区在线观看
|
亚洲一区二区三区高清
|
久久亚洲精选
|
亚洲一区二区视频
|
激情婷婷久久
|
欧美午夜不卡在线观看免费
|
欧美一区二区免费观在线
|
欧美激情中文不卡
|
久久国产精品久久久久久电车
|
欧美国产先锋
|
亚洲欧美日韩综合国产aⅴ
|
欧美a级在线
|
欧美在线视频播放
|
99re热精品
|
在线播放亚洲一区
|
国产精品视频一区二区三区
|
免费不卡中文字幕视频
|
亚洲欧美日韩国产一区二区
|
亚洲国产成人久久
|
另类专区欧美制服同性
|
午夜久久黄色
|
在线天堂一区av电影
|
亚洲国产一区二区三区a毛片
|
国产精品入口尤物
|
欧美精品在线观看91
|
久久久噜噜噜久久久
|
亚洲视频在线看
|
亚洲日产国产精品
|
亚洲国产另类精品专区
|
久久五月天婷婷
|
欧美一级一区
|
亚洲一区二区在线播放
|
99re成人精品视频
|
最新日韩在线视频
|
影音先锋中文字幕一区
|
国产一区在线播放
|
国产美女扒开尿口久久久
|
国产精品福利在线
|
国产精品成人一区
|
欧美天堂亚洲电影院在线观看
|
免费久久99精品国产自
|
久久亚洲私人国产精品va媚药
|
久久成人免费电影
|
欧美中文字幕第一页
|
欧美在线一级va免费观看
|
亚洲欧美99
|
欧美一区二区三区啪啪
|
香蕉成人伊视频在线观看
|
午夜精品久久久久久久久久久久
|
欧美伊人久久久久久午夜久久久久
|
中日韩美女免费视频网址在线观看
|
亚洲精品欧洲
|
99riav1国产精品视频
|
一区二区三区高清不卡
|
妖精视频成人观看www
|
亚洲图片欧美日产
|
亚洲男人的天堂在线观看
|
亚洲欧美日韩中文播放
|
欧美一级二区
|
久久在线观看视频
|
欧美激情四色
|
日韩午夜在线观看视频
|
亚洲一区二区精品
|
久久精品色图
|
欧美大片va欧美在线播放
|
欧美精品高清视频
|
国产精品久久影院
|
精品成人一区二区
|
亚洲精品乱码久久久久久
|
宅男噜噜噜66一区二区
|
亚洲欧美日韩一区二区三区在线
|
久久精品国产一区二区三区免费看
|
久久亚洲欧洲
|
亚洲激情综合
|
亚洲欧美电影院
|
暖暖成人免费视频
|
国产精品天天看
|
91久久精品国产91久久性色tv
|
夜夜嗨av一区二区三区
|
欧美一二三区精品
|
亚洲丰满在线
|
亚洲永久网站
|
欧美电影在线观看完整版
|
国产精品欧美一区二区三区奶水
|
韩国成人精品a∨在线观看
|
亚洲精品一区二区在线
|
欧美亚洲日本国产
|
亚洲第一区在线
|
亚洲欧美制服另类日韩
|
欧美激情bt
|
国产情人综合久久777777
|
亚洲精品乱码久久久久久久久
|
国产一区二区久久久
|
亚洲精品一区二区三区福利
|
欧美一区亚洲二区
|
亚洲九九九在线观看
|
久久婷婷国产综合尤物精品
|
国产精品福利影院
|
99精品欧美一区二区三区
|
葵司免费一区二区三区四区五区
|
在线一区日本视频
|