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

常見的C語言內(nèi)存錯(cuò)誤及對(duì)策

開發(fā) 后端
定義了指針變量,但是沒有為指針分配內(nèi)存,即指針沒有指向一塊合法的內(nèi)存。淺顯的例子就不舉了,這里舉幾個(gè)比較隱蔽的例子。

[[347030]]

一、指針沒有指向一塊合法的內(nèi)存

定義了指針變量,但是沒有為指針分配內(nèi)存,即指針沒有指向一塊合法的內(nèi)存。淺顯的例子就不舉了,這里舉幾個(gè)比較隱蔽的例子。

1、結(jié)構(gòu)體成員指針未初始化

  1. struct student 
  2.    char *name
  3.    int score; 
  4. }stu,*pstu; 
  5.  
  6. int main() 
  7.    strcpy(stu.name,"Jimy"); 
  8.    stu.score = 99; 
  9.    return 0; 

很多初學(xué)者犯了這個(gè)錯(cuò)誤還不知道是怎么回事。這里定義了結(jié)構(gòu)體變量stu,但是他沒想到這個(gè)結(jié)構(gòu)體內(nèi)部char *name 這成員在定義結(jié)構(gòu)體變量stu 時(shí),只是給name 這個(gè)指針變量本身分配了4 個(gè)字節(jié)。name 指針并沒有指向一個(gè)合法的地址,這時(shí)候其內(nèi)部存的只是一些亂碼。所以在調(diào)用strcpy 函數(shù)時(shí),會(huì)將字符串"Jimy"往亂碼所指的內(nèi)存上拷貝,而這塊內(nèi)存name 指針根本就無權(quán)訪問,導(dǎo)致出錯(cuò)。解決的辦法是為name 指針malloc 一塊空間。

同樣,也有人犯如下錯(cuò)誤:

 

  1. int main() 
  2.    pstu = (struct student*)malloc(sizeof(struct student)); 
  3.    strcpy(pstu->name,"Jimy"); 
  4.    pstu->score = 99; 
  5.    free(pstu); 
  6.    return 0; 

為指針變量pstu 分配了內(nèi)存,但是同樣沒有給name 指針分配內(nèi)存。錯(cuò)誤與上面第一種情況一樣,解決的辦法也一樣。這里用了一個(gè)malloc 給人一種錯(cuò)覺,以為也給name 指針分配了內(nèi)存。

2、沒有為結(jié)構(gòu)體指針分配足夠的內(nèi)存

  1. int main() 
  2.    pstu = (struct student*)malloc(sizeof(struct student*)); 
  3.    strcpy(pstu->name,"Jimy"); 
  4.    pstu->score = 99; 
  5.    free(pstu); 
  6.    return 0; 

為pstu 分配內(nèi)存的時(shí)候,分配的內(nèi)存大小不合適。這里把sizeof(struct student)誤寫為sizeof(struct student*)。當(dāng)然name 指針同樣沒有被分配內(nèi)存。解決辦法同上。

3、函數(shù)的入口校驗(yàn)

不管什么時(shí)候,我們使用指針之前一定要確保指針是有效的。

一般在函數(shù)入口處使用assert(NULL != p)對(duì)參數(shù)進(jìn)行校驗(yàn)。在非參數(shù)的地方使用if(NULL != p)來校驗(yàn)。但這都有一個(gè)要求,即p 在定義的同時(shí)被初始化為NULL 了。比如上面的例子,即使用if(NULL != p)校驗(yàn)也起不了作用,因?yàn)閚ame 指針并沒有被初始化為NULL,其內(nèi)部是一個(gè)非NULL 的亂碼。

assert 是一個(gè)宏,而不是函數(shù),包含在assert.h 頭文件中。如果其后面括號(hào)里的值為假,則程序終止運(yùn)行,并提示出錯(cuò);如果后面括號(hào)里的值為真,則繼續(xù)運(yùn)行后面的代碼。這個(gè)宏只在Debug 版本上起作用,而在Release 版本被編譯器完全優(yōu)化掉,這樣就不會(huì)影響代碼的性能。

有人也許會(huì)問,既然在Release 版本被編譯器完全優(yōu)化掉,那Release 版本是不是就完全沒有這個(gè)參數(shù)入口校驗(yàn)了呢?這樣的話那不就跟不使用它效果一樣嗎?

是的,使用assert 宏的地方在Release 版本里面確實(shí)沒有了這些校驗(yàn)。但是我們要知道,assert 宏只是幫助我們調(diào)試代碼用的,它的一切作用就是讓我們盡可能的在調(diào)試函數(shù)的時(shí)候把錯(cuò)誤排除掉,而不是等到Release 之后。它本身并沒有除錯(cuò)功能。再有一點(diǎn)就是,參數(shù)出現(xiàn)錯(cuò)誤并非本函數(shù)有問題,而是調(diào)用者傳過來的實(shí)參有問題。assert 宏可以幫助我們定位錯(cuò)誤,而不是排除錯(cuò)誤。

二、為指針分配的內(nèi)存太小

為指針分配了內(nèi)存,但是內(nèi)存大小不夠,導(dǎo)致出現(xiàn)越界錯(cuò)誤。

 

  1. char *p1 = “abcdefg”; 
  2. char *p2 = (char *)malloc(sizeof(char)*strlen(p1)); 
  3. strcpy(p2,p1); 

p1 是字符串常量,其長(zhǎng)度為7 個(gè)字符,但其所占內(nèi)存大小為8 個(gè)byte。初學(xué)者往往忘了字符串常量的結(jié)束標(biāo)志“\0”。這樣的話將導(dǎo)致p1 字符串中最后一個(gè)空字符“\0”沒有被拷貝到p2 中。解決的辦法是加上這個(gè)字符串結(jié)束標(biāo)志符:

 

  1. char *p2 = (char *)malloc(sizeof(char)*strlen(p1)+1*sizeof(char)); 

這里需要注意的是,只有字符串常量才有結(jié)束標(biāo)志符。比如下面這種寫法就沒有結(jié)束標(biāo)志符了:

 

  1. char a[7] = {‘a’,’b’,’c’,’d’,’e’,’f’,’g’}; 

另外,不要因?yàn)閏har 類型大小為1 個(gè)byte 就省略sizof(char)這種寫法。這樣只會(huì)使你的代碼可移植性下降。

三、內(nèi)存分配成功,但并未初始化

犯這個(gè)錯(cuò)誤往往是由于沒有初始化的概念或者是以為內(nèi)存分配好之后其值自然為0。未初始化指針變量也許看起來不那么嚴(yán)重,但是它確確實(shí)實(shí)是個(gè)非常嚴(yán)重的問題,而且往往出現(xiàn)這種錯(cuò)誤很難找到原因。

曾經(jīng)有一個(gè)學(xué)生在寫一個(gè)windows 程序時(shí),想調(diào)用字庫(kù)的某個(gè)字體。而調(diào)用這個(gè)字庫(kù)需要填充一個(gè)結(jié)構(gòu)體。他很自然的定義了一個(gè)結(jié)構(gòu)體變量,然后把他想要的字庫(kù)代碼賦值給了相關(guān)的變量。但是,問題就來了,不管怎么調(diào)試,他所需要的這種字體效果總是不出來。我在檢查了他的代碼之后,沒有發(fā)現(xiàn)什么問題,于是單步調(diào)試。在觀察這個(gè)結(jié)構(gòu)體變量的內(nèi)存時(shí),發(fā)現(xiàn)有幾個(gè)成員的值為亂碼。就是其中某一個(gè)亂碼惹得禍!因?yàn)橄到y(tǒng)會(huì)按照這個(gè)結(jié)構(gòu)體中的某些特定成員的值去字庫(kù)中尋找匹配的字體,當(dāng)這些值與字庫(kù)中某種字體的某些項(xiàng)匹配時(shí),就調(diào)用這種字體。但是很不幸,正是因?yàn)檫@幾個(gè)亂碼,導(dǎo)致沒有找到相匹配的字體!因?yàn)橄到y(tǒng)并無法區(qū)分什么數(shù)據(jù)是亂碼,什么數(shù)據(jù)是有效的數(shù)據(jù)。只要有數(shù)據(jù),系統(tǒng)就理所當(dāng)然的認(rèn)為它是有效的。

也許這種嚴(yán)重的問題并不多見,但是也絕不能掉以輕心。所以在定義一個(gè)變量時(shí),第一件事就是初始化。你可以把它初始化為一個(gè)有效的值,比如:

 

  1. int i = 10; 
  2. char *p = (char *)malloc(sizeof(char)); 

但是往往這個(gè)時(shí)候我們還不確定這個(gè)變量的初值,這樣的話可以初始化為0 或NULL。

 

  1. int i = 0; 
  2. char *p = NULL

如果定義的是數(shù)組的話,可以這樣初始化:

 

  1. int a[10] = {0}; 

或者用memset 函數(shù)來初始化為0:

 

  1. memset(a,0,sizeof(a)); 

memset 函數(shù)有三個(gè)參數(shù),第一個(gè)是要被設(shè)置的內(nèi)存起始地址;第二個(gè)參數(shù)是要被設(shè)置的值;第三個(gè)參數(shù)是要被設(shè)置的內(nèi)存大小,單位為byte。這里并不想過多的討論memset 函數(shù)的用法,如果想了解更多,請(qǐng)參考相關(guān)資料。

至于指針變量如果未被初始化,會(huì)導(dǎo)致if 語句或assert 宏校驗(yàn)失敗。這一點(diǎn),上面已有分析。

四、內(nèi)存越界

內(nèi)存分配成功,且已經(jīng)初始化,但是操作越過了內(nèi)存的邊界。這種錯(cuò)誤經(jīng)常是由于操作數(shù)組或指針時(shí)出現(xiàn)“多1”或“少1”。比如:

 

  1. int a[10] = {0}; 
  2. for (i=0; i<=10; i++) 
  3.    a[i] = i; 

所以,for 循環(huán)的循環(huán)變量一定要使用半開半閉的區(qū)間,而且如果不是特殊情況,循環(huán)變量盡量從0 開始。

五、內(nèi)存泄漏

內(nèi)存泄漏幾乎是很難避免的,不管是老手還是新手,都存在這個(gè)問題。甚至包括windows,Linux 這類軟件,都或多或少有內(nèi)存泄漏。也許對(duì)于一般的應(yīng)用軟件來說,這個(gè)問題似乎不是那么突出,重啟一下也不會(huì)造成太大損失。但是如果你開發(fā)的是嵌入式系統(tǒng)軟件呢?比如汽車制動(dòng)系統(tǒng),心臟起搏器等對(duì)安全要求非常高的系統(tǒng)。你總不能讓心臟起搏器重啟吧,人家閻王老爺是非常好客的。

會(huì)產(chǎn)生泄漏的內(nèi)存就是堆上的內(nèi)存(這里不討論資源或句柄等泄漏情況),也就是說由malloc 系列函數(shù)或new 操作符分配的內(nèi)存。如果用完之后沒有及時(shí)free 或delete,這塊內(nèi)存就無法釋放,直到整個(gè)程序終止。

1、告老還鄉(xiāng)求良田

怎么去理解這個(gè)內(nèi)存分配和釋放過程呢?先看下面這段對(duì)話:

萬歲爺:愛卿,你為朕立下了汗馬功勞,想要何賞賜啊?

某功臣:萬歲,黃金白銀,臣視之如糞土。臣年歲已老,欲告老還鄉(xiāng)。臣乞良田千畝以蔭后世,別無他求。

萬歲爺:愛卿,你勞苦功高,卻僅要如此小賞,朕今天就如你所愿。戶部劉侍郎,查看湖廣一帶是否還有千畝上等良田未曾封賞。

劉侍郎:長(zhǎng)沙尚有五萬余畝上等良田未曾封賞。

萬歲爺:在長(zhǎng)沙撥良田千畝封賞愛卿。愛卿,良田千畝,你欲何用啊?

某功臣:謝萬歲。長(zhǎng)沙一帶,適合種水稻,臣想用來種水稻。種水稻需要把田分為一畝一塊,方便耕種。

。。。。

2、如何使用malloc 函數(shù)

不要莫名其妙,其實(shí)上面這段小小的對(duì)話,就是malloc 的使用過程。malloc 是一個(gè)函數(shù),專門用來從堆上分配內(nèi)存。使用malloc 函數(shù)需要幾個(gè)要求:

內(nèi)存分配給誰?這里是把良田分配給某功臣。

分配多大內(nèi)存?這里是分配一千畝。

是否還有足夠內(nèi)存分配?這里是還有足夠良田分配。

內(nèi)存的將用來存儲(chǔ)什么格式的數(shù)據(jù),即內(nèi)存用來做什么?

這里是用來種水稻,需要把田分成一畝一塊。分配好的內(nèi)存在哪里?這里是在長(zhǎng)沙。

如果這五點(diǎn)都確定,那內(nèi)存就能分配。下面先看malloc 函數(shù)的原型: (void *)malloc(int size) malloc 函數(shù)的返回值是一個(gè)void 類型的指針,參數(shù)為int 類型數(shù)據(jù),即申請(qǐng)分配的內(nèi)存大小,單位是byte。內(nèi)存分配成功之后,malloc 函數(shù)返回這塊內(nèi)存的首地址。你需要一個(gè)指針來接收這個(gè)地址。但是由于函數(shù)的返回值是void *類型的,所以必須強(qiáng)制轉(zhuǎn)換成你所接收的類型。也就是說,這塊內(nèi)存將要用來存儲(chǔ)什么類型的數(shù)據(jù)。比如: char *p = (char *)malloc(100); 在堆上分配了100 個(gè)字節(jié)內(nèi)存,返回這塊內(nèi)存的首地址,把地址強(qiáng)制轉(zhuǎn)換成char *類型后賦給char *類型的指針變量p。同時(shí)告訴我們這塊內(nèi)存將用來存儲(chǔ)char 類型的數(shù)據(jù)。也就是說你只能通過指針變量p 來操作這塊內(nèi)存。這塊內(nèi)存本身并沒有名字,對(duì)它的訪問是匿名訪問。

上面就是使用malloc 函數(shù)成功分配一塊內(nèi)存的過程。但是,每次你都能分配成功嗎?

不一定。上面的對(duì)話,皇帝讓戶部侍郎查詢是否還有足夠的良田未被分配出去。使用malloc函數(shù)同樣要注意這點(diǎn):如果所申請(qǐng)的內(nèi)存塊大于目前堆上剩余內(nèi)存塊(整塊),則內(nèi)存分配會(huì)失敗,函數(shù)返回NULL。注意這里說的“堆上剩余內(nèi)存塊”不是所有剩余內(nèi)存塊之和,因?yàn)閙alloc 函數(shù)申請(qǐng)的是連續(xù)的一塊內(nèi)存。

既然malloc 函數(shù)申請(qǐng)內(nèi)存有不成功的可能,那我們?cè)谑褂弥赶蜻@塊內(nèi)存的指針時(shí),必須用if(NULL != p)語句來驗(yàn)證內(nèi)存確實(shí)分配成功了。

3、用malloc 函數(shù)申請(qǐng)0 字節(jié)內(nèi)存

另外還有一個(gè)問題:用malloc 函數(shù)申請(qǐng)0 字節(jié)內(nèi)存會(huì)返回NULL 指針嗎?

可以測(cè)試一下,也可以去查找關(guān)于malloc 函數(shù)的說明文檔。申請(qǐng)0 字節(jié)內(nèi)存,函數(shù)并不返回NULL,而是返回一個(gè)正常的內(nèi)存地址。但是你卻無法使用這塊大小為0 的內(nèi)存。這好尺子上的某個(gè)刻度,刻度本身并沒有長(zhǎng)度,只有某兩個(gè)刻度一起才能量出長(zhǎng)度。對(duì)于這一點(diǎn)一定要小心,因?yàn)檫@時(shí)候if(NULL != p)語句校驗(yàn)將不起作用。

4、內(nèi)存釋放

既然有分配,那就必須有釋放。不然的話,有限的內(nèi)存總會(huì)用光,而沒有釋放的內(nèi)存卻在空閑。與malloc 對(duì)應(yīng)的就是free 函數(shù)了。free 函數(shù)只有一個(gè)參數(shù),就是所要釋放的內(nèi)存塊的首地址。比如上例: free(p); free 函數(shù)看上去挺狠的,但它到底作了什么呢?其實(shí)它就做了一件事:斬?cái)嘀羔樧兞颗c這塊內(nèi)存的關(guān)系。比如上面的例子,我們可以說malloc 函數(shù)分配的內(nèi)存塊是屬于p 的,因?yàn)槲覀儗?duì)這塊內(nèi)存的訪問都需要通過p 來進(jìn)行。free 函數(shù)就是把這塊內(nèi)存和p 之間的所有關(guān)系斬?cái)唷拇藀 和那塊內(nèi)存之間再無瓜葛。至于指針變量p 本身保存的地址并沒有改變,但是它對(duì)這個(gè)地址處的那塊內(nèi)存卻已經(jīng)沒有所有權(quán)了。那塊被釋放的內(nèi)存里面保存的值也沒有改變,只是再也沒有辦法使用了。

這就是free 函數(shù)的功能。按照上面的分析,如果對(duì)p 連續(xù)兩次以上使用free 函數(shù),肯定會(huì)發(fā)生錯(cuò)誤。因?yàn)榈谝皇褂胒ree 函數(shù)時(shí),p 所屬的內(nèi)存已經(jīng)被釋放,第二次使用時(shí)已經(jīng)無內(nèi)存可釋放了。關(guān)于這點(diǎn),我上課時(shí)讓學(xué)生記住的是:一定要一夫一妻制,不然肯定出錯(cuò)。

malloc 兩次只free 一次會(huì)內(nèi)存泄漏;malloc 一次free 兩次肯定會(huì)出錯(cuò)。也就是說,在程序中malloc 的使用次數(shù)一定要和free 相等,否則必有錯(cuò)誤。這種錯(cuò)誤主要發(fā)生在循環(huán)使用malloc 函數(shù)時(shí),往往把malloc 和free 次數(shù)弄錯(cuò)了。這里留個(gè) 練習(xí):

寫兩個(gè)函數(shù),一個(gè)生成鏈表,一個(gè)釋放鏈表。兩個(gè)函數(shù)的參數(shù)都只使用一個(gè)表頭指針。

5、內(nèi)存釋放之后

既然使用free 函數(shù)之后指針變量p 本身保存的地址并沒有改變,那我們就需要重新把p的值變?yōu)镹ULL: p = NULL; 這個(gè)NULL 就是我們前面所說的“栓野狗的鏈子”。如果你不栓起來遲早會(huì)出問題的。比如:在free(p)之后,你用if(NULL != p)這樣的校驗(yàn)語句還能起作用嗎?例如:

 

  1. char *p = (char *)malloc(100); 
  2. strcpy(p, “hello”); 
  3. free(p); /* p 所指的內(nèi)存被釋放,但是p 所指的地址仍然不變*/ 
  4. … 
  5. if (NULL != p) 
  6.   /* 沒有起到防錯(cuò)作用*/ 
  7.   strcpy(p, “world”); /* 出錯(cuò)*/ 

釋放完塊內(nèi)存之后,沒有把指針置NULL,這個(gè)指針就成為了“野指針”,也有書叫“懸垂指針”。這是很危險(xiǎn)的,而且也是經(jīng)常出錯(cuò)的地方。所以一定要記住一條:free 完之后,一定要給指針置NULL。

同時(shí)留一個(gè)問題:對(duì)NULL 指針連續(xù)free 多次會(huì)出錯(cuò)嗎?為什么?如果讓你來設(shè)計(jì)free函數(shù),你會(huì)怎么處理這個(gè)問題?

六、內(nèi)存已經(jīng)被釋放了,但是繼續(xù)通過指針來使用

這里一般有三種情況:

第一種:就是上面所說的,free(p)之后,繼續(xù)通過p 指針來訪問內(nèi)存。解決的辦法就是給p 置NULL。

第二種:函數(shù)返回棧內(nèi)存。這是初學(xué)者最容易犯的錯(cuò)誤。比如在函數(shù)內(nèi)部定義了一個(gè)數(shù)組,卻用return 語句返回指向該數(shù)組的指針。解決的辦法就是弄明白棧上變量的生命周期。

第三種:內(nèi)存使用太復(fù)雜,弄不清到底哪塊內(nèi)存被釋放,哪塊沒有被釋放。解決的辦法是重新設(shè)計(jì)程序,改善對(duì)象之間的調(diào)用關(guān)系。

上面詳細(xì)討論了常見的六種錯(cuò)誤及解決對(duì)策,希望讀者仔細(xì)研讀,盡量使自己對(duì)每種錯(cuò)誤發(fā)生的原因及預(yù)防手段爛熟于胸。一定要多練,多調(diào)試代碼,同時(shí)多總結(jié)經(jīng)驗(yàn)。 

 

責(zé)任編輯:龐桂玉 來源: C語言與C++編程
相關(guān)推薦

2022-01-23 14:29:25

C語言編程語言

2021-10-19 05:54:58

C語言編程

2009-06-18 10:24:00

CDMA網(wǎng)絡(luò)優(yōu)化

2018-11-14 14:18:26

APP網(wǎng)絡(luò)分析

2024-05-27 16:27:22

2021-06-16 15:04:06

JavaScript內(nèi)存開發(fā)

2021-12-30 21:51:10

JavaScript開發(fā)內(nèi)存

2012-05-23 09:28:14

Titanium錯(cuò)誤應(yīng)對(duì)辦法

2025-05-27 02:55:00

空指針?內(nèi)存地址?

2015-12-21 11:45:27

C語言常見問題錯(cuò)誤

2024-01-04 07:49:00

Go語言方法

2022-01-07 13:50:55

語言內(nèi)存代碼

2009-08-27 11:12:04

C# foreach

2024-02-21 14:55:19

C++語言編程

2021-12-16 06:52:33

C語言內(nèi)存分配

2024-01-06 08:16:19

init?函數(shù)數(shù)據(jù)開發(fā)者

2010-01-25 18:15:52

2009-12-25 09:05:12

2013-08-15 09:47:07

云遷移云技術(shù)

2015-08-19 14:11:56

SQL Server錯(cuò)誤處理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

午夜在线电影亚洲一区| 日韩精品国产欧美| 日韩大片在线观看视频| 欧美精品成人网| 嫩草香蕉在线91一二三区| 国产精品一区在线观看你懂的| 久久久久久久999精品视频| 日本xxxx裸体xxxx| 丁香久久综合| 亚洲成a人在线观看| 日韩欧美精品一区二区| 午夜精品在线播放| 肉色丝袜一区二区| 久久久久久久激情视频| 任你操精品视频| 麻豆成人入口| 日韩亚洲欧美成人一区| 亚洲成人av免费看| 1区2区3区在线| 自拍偷在线精品自拍偷无码专区| 精品国产一区二区三区麻豆小说| 国产女人18毛片18精品| 日日欢夜夜爽一区| 久久久亚洲影院| 国产一区第一页| 一区三区在线欧| 精品久久久三级丝袜| 亚洲美女爱爱视频| 亚洲精品在线影院| 性久久久久久久| 4444在线观看| www.国产精品.com| 久久视频一区二区| 久久精品美女| 丰满少妇被猛烈进入| 精品一区二区三区蜜桃| 国产精品igao视频| 中文字幕一区在线播放| 精品69视频一区二区三区Q| 久久久国产精品亚洲一区| 精品人妻无码一区| 免费成人网www| 日韩精品高清在线| 日韩av无码一区二区三区不卡| 高清在线一区二区| 欧美精品电影在线播放| 五月婷婷六月丁香激情| 久久99久久99精品免观看软件| 亚洲成av人片www| 东北少妇不带套对白| 99热国产在线| 一区二区三区不卡视频| 日本黄xxxxxxxxx100| 成人观看免费视频| 久久网站免费观看| 亚洲视频免费一区| 色哟哟精品观看| 欧美禁忌电影网| 亚洲欧美中文日韩在线| 一本加勒比北条麻妃| 蜜乳av综合| 国产亚洲a∨片在线观看| 精品人伦一区二区三电影| 国内成人自拍| 色777狠狠综合秋免鲁丝| 在线免费看视频| 五月婷婷六月综合| 久99久在线视频| 欧美日韩国产精品综合| 一区免费视频| 秋霞av国产精品一区| 中文字幕在线观看视频免费| 毛片av一区二区三区| 国产日韩欧美在线| 国产成人精品一区二区无码呦| 国产乱色国产精品免费视频| 成人高清在线观看| 午夜视频1000| 国产精品久久久久久久第一福利 | 欧美大尺度激情区在线播放| 国产精品老熟女一区二区| 极品av少妇一区二区| 欧美在线国产精品| 中文字幕资源网| 国产精品一色哟哟哟| 国产在线精品一区二区三区》 | 久久国产精品免费一区二区三区| 精品久久久久久综合日本欧美| 波多野结衣福利| 91蜜臀精品国产自偷在线| 欧美精品电影免费在线观看| 国产一区二区视频网站| 国产精品自在欧美一区| 久久久久久久久一区| 欧美日韩欧美| 欧美日韩亚洲成人| 国产欧美一区二| 日本一区福利在线| 久久久精品影院| 亚洲综合图片网| 国产成人免费在线| 欧美主播一区二区三区美女 久久精品人 | 日韩有码欧美| 亚洲精品美女久久| 亚洲最大的黄色网址| 久久伊人亚洲| 91中文字精品一区二区| 国产精品麻豆一区二区三区| 亚洲在线免费播放| 一区二区三区网址| 欧美亚洲色图校园春色| 欧美成人免费一级人片100| 精品人妻一区二区三区潮喷在线| 国产91综合一区在线观看| 亚洲国产欧洲综合997久久| 变态调教一区二区三区| 欧美日韩免费一区二区三区视频| 亚洲av网址在线| 国产综合激情| 成人在线观看视频网站| 成人在线视频成人| 午夜精品久久久久久久久久| 日韩精品视频网址| 久久激情电影| 国产91在线播放九色快色| 天天干天天爽天天操| 又紧又大又爽精品一区二区| 手机av在线网| 日本欧美肥老太交大片| 国产第一区电影| 蜜桃视频在线入口www| 五月天久久比比资源色| 久草视频福利在线| 亚洲欧美亚洲| 91黄色国产视频| 在线观看小视频| 91精品国产综合久久久蜜臀粉嫩| 91社区视频在线观看| 天使萌一区二区三区免费观看| 好吊色欧美一区二区三区视频| 日本小视频在线免费观看| 欧美一区二区视频观看视频| 神马午夜精品91| 精品一区二区综合| 波多野结衣激情| а天堂中文最新一区二区三区| 日日骚av一区| 国产精品久久久久久久免费看| 国产精品卡一卡二卡三| 香蕉加勒比综合久久| av动漫免费看| 男男gay无套免费视频欧美| 热久久这里只有精品| 日本韩国精品一区二区| 91久久精品一区二区二区| 黄色片网站免费| 另类小说欧美激情| 美国av在线播放| 涩涩屋成人免费视频软件| 欧美另类99xxxxx| 亚洲国产综合一区| 亚洲va国产天堂va久久en| 国产毛片毛片毛片毛片毛片毛片| 99伊人成综合| 日本亚洲自拍| 91精品福利观看| 欧美激情综合亚洲一二区| 天天干,夜夜爽| 亚洲影院高清在线| 亚洲欧洲综合网| 毛片av一区二区三区| 精品乱码亚洲一区二区不卡| 久久久精品人妻一区二区三区四| 国产丶欧美丶日本不卡视频| 欧美人成在线观看| 妖精一区二区三区精品视频| 国产精品久久久久久搜索| 亚洲一区二区三区av无码| 91欧美日韩在线| 国模视频一区二区| 国产精品一区二区婷婷| 欧美日韩国产小视频在线观看| 日本黄色小说视频| 97se亚洲国产综合自在线 | 久久99伊人| 中文字幕av日韩精品| 成午夜精品一区二区三区软件| 欧美在线国产精品| jizzjizz亚洲| 亚洲免费电影在线观看| 国产精品久久久久久在线| 亚洲成人激情综合网| 日韩黄色中文字幕| www.性欧美| 中文字幕第100页| aa级大片欧美三级| www亚洲国产| 久久av影视| 97se国产在线视频| 99精品国自产在线| 97国产一区二区精品久久呦| 日本a级在线| 亚洲美女中文字幕| 成人1区2区3区| 欧美日韩一级视频| caoporn国产| 亚洲一线二线三线久久久| www.日本高清视频| 久久一日本道色综合| 欧美一级片在线免费观看| 麻豆国产精品一区二区三区| 大陆极品少妇内射aaaaa| 女同性一区二区三区人了人一| 日本午夜精品一区二区三区| 加勒比久久高清| 91久久国产自产拍夜夜嗨| 欧美日韩尤物久久| **欧美日韩vr在线| 97超碰免费在线| 欧美成人久久久| 欧美激情午夜| 中文字幕精品久久久久| 天堂成人在线| 精品动漫一区二区三区在线观看| 91中文字幕在线播放| 欧美最新大片在线看| 天堂中文在线网| 偷拍亚洲欧洲综合| 久草中文在线视频| 亚洲欧美日韩综合aⅴ视频| 又色又爽的视频| 亚洲国产电影在线观看| 一区二区三区四区免费| 91蜜桃在线观看| 中文文字幕文字幕高清| 成人av在线资源网| 日本wwwwwww| 国产99久久久国产精品潘金 | 91麻豆国产福利精品| 一级特级黄色片| 91小视频免费看| 亚洲国产欧美视频| 久久综合成人精品亚洲另类欧美 | 中国老熟女重囗味hdxx| 国产精品自拍网站| 丰满少妇中文字幕| 国产91丝袜在线播放| 99免费观看视频| 成人白浆超碰人人人人| 日韩精品视频一区二区| 91丨porny丨最新| 一区二区三区四区免费| 国产欧美日本一区视频| 日本成人免费在线观看| 日韩毛片在线免费观看| 欧美日韩国产精品一区二区三区| 亚洲综合在线观看视频| 国产午夜视频在线播放| 午夜不卡在线视频| 一级做a爰片久久毛片| 欧美亚洲综合一区| 91久久久久久久久久久久| 7777精品伊人久久久大香线蕉的 | 91av国产在线| 希岛爱理一区二区三区av高清| 国产精品一久久香蕉国产线看观看| 欧洲精品久久久久毛片完整版| 亚洲自拍偷拍在线| gv天堂gv无码男同在线观看| 爽爽窝窝午夜精品一区二区| 日本一区二区免费在线| 菠萝菠萝蜜网站| 国产婷婷色一区二区三区| av在线播放中文字幕| 亚洲欧美aⅴ...| 日本一级片免费看| 91成人免费网站| 国内老熟妇对白xxxxhd| 亚洲精品久久久久| 日本最新在线视频| 欧美精品久久久久久久免费观看| 天堂网在线最新版www中文网| 国产精品日韩一区| 亚洲一区电影| 日本一区高清在线视频| 综合一区二区三区| 欧美 日本 亚洲| 麻豆久久一区二区| 黄色激情在线观看| 国产精品视频免费看| 精品视频在线观看免费| 欧美在线免费观看视频| 国产成人麻豆精品午夜在线| 亚洲欧美制服丝袜| 神马午夜伦理不卡| 国产精品久久久久久久久久久新郎| 日韩精品免费视频一区二区三区 | 精品一区av| 日韩成人手机在线| 久久精品久久精品| 国产精品探花一区二区在线观看| 亚洲欧美日韩中文播放| 久久国产乱子伦精品| 精品国产一区二区精华| 阿v免费在线观看| 97在线视频国产| 国产精品久久久久久久久久辛辛| 秋霞在线观看一区二区三区| 亚洲国产免费| 成人三级做爰av| 国产精品美女久久久久久久 | 欧美日韩国产色站一区二区三区| 天天综合天天色| 久久99视频免费| 青草综合视频| 欧美精品二区三区四区免费看视频 | 成年人免费看毛片| 日韩精品中午字幕| 黄网站在线播放| 国产欧美婷婷中文| 精品久久中文| 日本精品一区二区三区四区| 丰满岳乱妇一区二区三区| 日韩福利小视频| 欧美日韩大陆在线| 第一页在线观看| 国产91九色视频| 丝袜美腿综合| 女人天堂av手机在线| 成人av资源网站| 日韩免费一二三区| 亚洲成人黄色网址| 国产蜜臀一区二区打屁股调教| 91午夜理伦私人影院| 99视频精品视频高清免费| 色婷婷狠狠18| 国产精品久久久一区麻豆最新章节| 不卡av电影在线| 亚洲午夜精品视频| 日韩中文在线播放| 天天人人精品| 麻豆91在线播放免费| 毛片久久久久久| 7777精品伊人久久久大香线蕉| 欧美一级二级三级区| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 2021中文字幕在线| 九九九久久久| 久热re这里精品视频在线6| av网站免费在线看| 欧美在线一区二区三区| 日韩黄色影院| 91精品国产综合久久久久久丝袜| 国产尤物精品| 懂色av粉嫩av蜜乳av| 色美美综合视频| 92国产在线视频| 91久久久久久久久久久| 中文字幕一区二区三区乱码图片| avtt中文字幕| 婷婷丁香久久五月婷婷| 黄网在线免费| 成人两性免费视频| 亚洲私拍自拍| 公侵犯人妻一区二区三区| 欧美午夜理伦三级在线观看| 黄网站视频在线观看| 国产亚洲自拍偷拍| 日韩高清欧美激情| 手机在线免费看毛片| 精品福利一区二区三区免费视频| 久久青青视频| 亚洲第一精品区| bt欧美亚洲午夜电影天堂| 日日夜夜操视频| 精品久久国产精品| 国产欧美自拍一区| 99视频在线视频| 夜夜嗨av一区二区三区网页 | 在线视频 中文字幕| 久99久在线视频| 精品国产91| 韩国三级在线播放| 色综合久久中文字幕| 成人片在线看| 欧美日韩国产三区| 国产乱码精品一区二区三区忘忧草 | 亚洲国产另类久久精品| 成人在线高清| 青青青国产在线观看| 亚洲欧美在线观看| 秋霞av在线| 99精彩视频| 免费在线成人网| 欧美三级韩国三级日本三斤在线观看 | 六月婷婷七月丁香| 日韩一区二区三区电影在线观看 | 国产精品剧情一区二区在线观看| 精品国产乱码久久久久软件| 激情综合色丁香一区二区|