青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 62,  comments - 19,  trackbacks - 0


void ? dialog5::OnRclickList1(NMHDR* ? pNMHDR, ? LRESULT* ? pResult) ? ?
? { ?
? // ? TODO: ? Add ? your ? control ? notification ? handler ? code ? here ?
? CMenu ? menu1,*menu2; ?
? CPoint ? point1; ?
? menu1.LoadMenu(IDR_MENU1); ?
? menu2=menu1.GetSubMenu(0); ?
? ::GetCursorPos(&point1); ?
? menu2->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON, ?
? point1.x,point1.y,this); ?
? ?
? *pResult ? = ? 0; ?
? }??

posted @ 2006-11-29 10:48 喬棟 閱讀(242) | 評論 (0)編輯 收藏

偶然發現的一個有用的windows api SetROP2(int nDrawMode),現在將我對該api的使用的心得歸納如下:

該函數的主要的作用是根據nDrawMode設置的方式重新設定繪圖的方式,下面就不同的nDrawMode值具體解釋繪圖模式是如何改變的。

首先就nDrawMode的取值有以下的情況:

  • R2_BLACK???Pixel is always black.?? //所有繪制出來的像素為黑色
  • R2_WHITE???Pixel is always white.??? //所有繪制出來的像素為白色
  • R2_NOP???Pixel remains unchanged.?? //任何繪制將不改變當前的狀態
  • R2_NOT???Pixel is the inverse of the screen color.?//當前繪制的像素值設為屏幕像素值的反,這樣可以覆蓋掉上次的繪圖,(自動擦除上次繪制的圖形)
  • R2_COPYPEN???Pixel is the pen color.??? //使用當前的畫筆的顏色
  • R2_NOTCOPYPEN???Pixel is the inverse of the pen color.? //當前畫筆的反色
  • /////////////////////////////////////////////////////////////////////////////////example/////////////////////////////////////////////////////////////////////////
    ??ClientDC.SetROP2(R2_NOT);
    ??ClientDC.MoveTo(m_PointOrigin);
    ??ClientDC.LineTo(m_PointOld);
    ??ClientDC.MoveTo(m_PointOrigin);
    ??ClientDC.LineTo(point);
    ??m_PointOld = point;
    ??CView::OnMouseMove(nFlags, point);
    ///////////////////////////////////////////////////////////////////////////////////////end/////////////////////////////////////////////////////////////////////////

  • 總之,上述api的一個作用是在需要改變繪圖的模式時,不需要重新設置畫筆,只需要設置不同的繪圖的模式即可達到相應的目的。


  • posted @ 2006-11-20 17:27 喬棟 閱讀(1784) | 評論 (0)編輯 收藏

    #include<stdio.h>

    struct a
    {
    ?int b;
    };
    struct b
    {
    ??? int a;
    };
    void main()
    {
    ?a A;
    ?A.b = NULL;
    ?A.b = 1;
    ?
    ?b a;
    ?a.a = 3;
    }

    在C的環境下,會報錯,在C++的情況,這樣的操作就是允許的。
    在C++的編譯器中,允許將結構體名作為一個變量名來對待。

    posted @ 2006-11-20 10:54 喬棟 閱讀(232) | 評論 (0)編輯 收藏
    什么是野指針?  
    ??????一個母親有兩個小孩(兩個指針),一個在廚房,一個在臥室,(屬于不同的代碼塊,其生存期不同)母親讓在廚房的小孩帶一塊蛋糕(指針指向的對象)給在臥室的小孩,這樣在臥室的孩子才肯寫作業。但這個在廚房的小孩比較淘氣,他在走出廚房時自己將蛋糕吃了,沒能帶出來。而在臥室的沒有吃到蛋糕,所以不肯完成他的作業。結果母親卻不知道臥室的孩子沒有吃到蛋糕,還以為作業完了。結果第二天她就被老師召喚到辦公室了。事情麻煩了。  這樣,那個在臥室的孩子就是野指針了,因為他沒有得到應得的蛋糕,不能完成母親交給他的作業。
    ?
    ??????野指針是指那些你已經釋放掉的內存指針。當你調用free(p)時,你真正清楚這個動作背后的內容嗎?你會說p指向的內存被釋放了。沒錯,p本身有變化嗎?答案是p本身沒有變化。它指向的內存仍然是有效的,你繼續讀寫p指向的內存,沒有人能攔得住你。??
    ??????釋放掉的內存會被內存管理器重新分配,此時,野指針指向的內存已經被賦予新的意義。對野指針指向內存的訪問,無論是有意還是無意的,都為此會付出巨大代價,因為它造成的后果,如同越界訪問一樣是不可預料的。?
    ??????釋放內存后立即把對應指針置為空值,這是避免野指針常用的方法。這個方法簡單有效,只是要注意,當然指針是從函數外層傳入的時,在函數內把指針置為空值,對外層的指針沒有影響。比如,你在析構函數里把this指針置為空值,沒有任何效果,這時應該在函數外層把指針置為空值。




    posted @ 2006-11-13 09:48 喬棟 閱讀(340) | 評論 (0)編輯 收藏
    #include <stdio.h>
    void main()
    {
    ? ? ? ? int i;
    ? ? ? ?
    ? ? ? ? if(i = -1)
    ? ? ? ? ? ? ? ? printf("True!\n");
    ? ? ? ? else
    ? ? ? ? ? ? ? ? printf("False!\n");
    ? ? ? ?
    ? ? ? ? if(i = 0)
    ? ? ? ? ? ? ? ? printf("True!\n");
    ? ? ? ? else
    ? ? ? ? ? ? ? ? printf("False!\n");
    }
    結果是什么?為什么呢?
    posted @ 2006-11-10 14:54 喬棟 閱讀(226) | 評論 (0)編輯 收藏
    解釋auto_ptr



    #include <iostream>
    #include <memory>
    using namespace std;

    int main()
    {
    ? ? ? ? auto_ptr<int> pi ( new int(1024) );
    ? ? ? ? cout << *pi << endl;
    ? ? ? ? return 0;
    }
    回答:

    auto_ptr是C++標準庫提供的類模板,它可以幫助程序員自動管理用new表達式動態分配的單個對象。當auto_ptr對象的生命期結束時,動態分配的對象被自動釋放。


















    posted @ 2006-11-10 14:06 喬棟 閱讀(300) | 評論 (0)編輯 收藏
    C++之內存分配


    ??? 很多人都覺得學習C++是特別困難的事情。C++學習是比較復雜的:它的內存分配、指針、以及面向對象思想的實現等等,確實需要一定的技術積累。我們將以專題的形式,為大家逐一剖析c++的技術重點和難點。

    ??? 本專題討論的就是內存分配。學習c++如果不了解內存分配是一件非常可悲的事情。而且,可以這樣講,一個C++程序員無法掌握內存、無法了解內存,是不能夠成為一個合格的C++程序員的。

    ??? 一、內存基本構成
    ??? 可編程內存在基本上分為這樣的幾大部分:靜態存儲區、堆區和棧區。他們的功能不同,對他們使用方式也就不同。
    ??? 靜態存儲區:內存在程序編譯的時候就已經分配好,這塊內存在程序的整個運行期間都存在。它主要存放靜態數據、全局數據和常量。
    ??? 棧區:在執行函數時,函數內局部變量的存儲單元都可以在棧上創建,函數執行結束時這些存儲單元自動被釋放。棧內存分配運算內置于處理器的指令集中,效率很高,但是分配的內存容量有限。
    ??? 堆區:亦稱動態內存分配。程序在運行的時候用malloc或new申請任意大小的內存,程序員自己負責在適當的時候用free或delete釋放內存。動態內存的生存期可以由我們決定,如果我們不釋放內存,程序將在最后才釋放掉動態內存。 但是,良好的編程習慣是:如果某動態內存不再使用,需要將其釋放掉,否則,我們認為發生了內存泄漏現象。

    ??? 二、三者之間的區別
    ??? 我們通過代碼段來看看對這樣的三部分內存需要怎樣的操作和不同,以及應該注意怎樣的地方。
    ??? 例一:靜態存儲區與棧區

    char* p = “Hello World1”;

    char a[] = “Hello World2”;

    p[2] = ‘A’;

    a[2] = ‘A’;

    ?

    char* p1 = “Hello World1;”


    ??? 這個程序是有錯誤的,錯誤發生在p[2] = ‘A’這行代碼處,為什么呢,是變量p和變量數組a都存在于棧區的(任何臨時變量都是處于棧區的,包括在main()函數中定義的變量)。但是,數據“Hello World1”和數據“Hello World2”是存儲于不同的區域的。

    ??? 因為數據“Hello World2”存在于數組中,所以,此數據存儲于棧區,對它修改是沒有任何問題的。因為指針變量p僅僅能夠存儲某個存儲空間的地址,數據“Hello World1”為字符串常量,所以存儲在靜態存儲區。雖然通過p[2]可以訪問到靜態存儲區中的第三個數據單元,即字符‘l’所在的存儲的單元。但是因為數據“Hello World1”為字符串常量,不可以改變,所以在程序運行時,會報告內存錯誤。并且,如果此時對p和p1輸出的時候會發現p和p1里面保存的地址是完全相同的。換句話說,在數據區只保留一份相同的數據(見圖1-1)。

    ??? 例二:棧區與堆區

    char*? f1()

    {

    ?? char* p = NULL;

    ?? char a;

    ?? p = &a;

    ?? return p;

    }

    char* f2()

    {

    ?? char* p = NULL:

    ?? p =(char*)? new? char[4];

    ?? return p;

    }


    ??? 這兩個函數都是將某個存儲空間的地址返回,二者有何區別呢?f1()函數雖然返回的是一個存儲空間,但是此空間為臨時空間。也就是說,此空間只有短暫的生命周期,它的生命周期在函數f1()調用結束時,也就失去了它的生命價值,即:此空間被釋放掉。所以,當調用f1()函數時,如果程序中有下面的語句:

    ?

    char* p ;

    p = f1();

    *p = ‘a’;


    ??? 此時,編譯并不會報告錯誤,但是在程序運行時,會發生異常錯誤。因為,你對不應該操作的內存(即,已經釋放掉的存儲空間)進行了操作。但是,相比之下,f2()函數不會有任何問題。因為,new這個命令是在堆中申請存儲空間,一旦申請成功,除非你將其delete或者程序終結,這塊內存將一直存在。也可以這樣理解,堆內存是共享單元,能夠被多個函數共同訪問。如果你需要有多個數據返回卻苦無辦法,堆內存將是一個很好的選擇。但是一定要避免下面的事情發生:

    ?

    void f()

    {

    ??

    ?? char * p;

    ?? p = (char*)new char[100];

    ??

    }


    ??? 這個程序做了一件很無意義并且會帶來很大危害的事情。因為,雖然申請了堆內存,p保存了堆內存的首地址。但是,此變量是臨時變量,當函數調用結束時p變量消失。也就是說,再也沒有變量存儲這塊堆內存的首地址,我們將永遠無法再使用那塊堆內存了。但是,這塊堆內存卻一直標識被你所使用(因為沒有到程序結束,你也沒有將其delete,所以這塊堆內存一直被標識擁有者是當前您的程序),進而其他進程或程序無法使用。我們將這種不道德的“流氓行為”(我們不用,卻也不讓別人使用)稱為內存泄漏。這是我們C++程序員的大忌!!請大家一定要避免這件事情的發生。

    ??? 總之,對于堆區、棧區和靜態存儲區它們之間最大的不同在于,棧的生命周期很短暫。但是堆區和靜態存儲區的生命周期相當于與程序的生命同時存在(如果您不在程序運行中間將堆內存delete的話),我們將這種變量或數據成為全局變量或數據。但是,對于堆區的內存空間使用更加靈活,因為它允許你在不需要它的時候,隨時將它釋放掉,而靜態存儲區將一直存在于程序的整個生命周期中。

    posted @ 2006-11-09 17:22 喬棟 閱讀(340) | 評論 (1)編輯 收藏
    c++中delete前,判斷指針是否為0,有必要嗎?

    有必要判斷pi = 0嗎?

    if ( pi != 0 )
    ? ? delete pi;
    解答:

    c++中,如果指針等于0的話,c++不會調用delete的。(因為c++中隱式的進行了判等)

    如果顯示的判等,那么實際上這個測試會被執行2次。


    靜態與動態內存分配的兩個主要區別:

    1. 靜態對象是有名字的變量,直接對其進行操作;動態對象是沒有名字的變量,通過指針間接地對它們進行操作。

    int *pia = new int (1024)
    分配了一個沒有名字int類型的對象,對象初始值是1024。然后,表達式返回對象在內存中的地址。


    2. 靜態對象的分配和釋放由編譯器自動處理。動態對象的分配和釋放必須由程序員自己顯式管理。

















    posted @ 2006-11-09 16:53 喬棟 閱讀(1977) | 評論 (0)編輯 收藏

    試題 4

    void GetMemory( char *p )
    {
    ? ?p = (char *) malloc( 100 );
    }

    void Test( void )
    {
    ? ?char *str = NULL;

    ? ?GetMemory( str );
    ? ?strcpy( str, "hello world" );
    ? ?printf( str );
    }
    試題 5

    char *GetMemory( void )
    {? ?
    ? ???char p[] = "hello world";? ?? ?

    ? ???return p;??
    }
    void Test( void )
    {? ?
    ? ???char *str = NULL;??

    ? ???str = GetMemory();? ?
    ? ???printf( str );? ?
    }

    試題 6
    void GetMemory( char **p, int num )
    {
    ? ???*p = (char *) malloc( num );
    }
    void Test( void )
    {
    ? ???char *str = NULL;

    ? ???GetMemory( &str, 100 );
    ? ???strcpy( str, "hello" );
    ? ???printf( str );
    }

    試題 7

    void Test( void )
    {
    ? ???char *str = (char *) malloc( 100 );

    ? ???strcpy( str, "hello" );
    ? ???free( str );

    ? ???...??//
    省略的其它語句

    }

    解答:

    試題 4 傳入中 GetMemory( char *p ) 函數的形參為字符串指針,在函數內部修改形參并不能真正的改變傳入形參的值,執行完

    char *str = NULL;

    GetMemory( str );

    后的 str 仍然為 NULL

    試題 5

    ? ???char p[] = "hello world";? ?

    ? ???return p;??

    p[] 數組為函數內的局部自動變量,在函數返回后,內存已經被釋放。這是許多程序員常犯的錯誤,其根源在于不理解變量的生存期。
    試題 6 GetMemory 避免了試題 4 的問題,傳入 GetMemory 的參數為字符串指針的指針,但是在 GetMemory 中執行申請內存及賦值語句

    p = (char *) malloc( num );

    后未判斷內存是否申請成功,應加上:

    if ( p == NULL )
    {

    ? ?...//
    進行申請內存失敗處理
      }

    試題 7 存在與試題 6 同樣的問題,在執行

    char *str = (char *) malloc(100);

    后未進行內存是否申請成功的判斷;另外,在 free(str) 后未置 str 為空,導致可能變成一個 指針,應加上:

    str = NULL;

    試題 6 Test 函數中也未對 malloc 的內存進行釋放。

    剖析:

    試題 4 7 考查面試者對內存操作的理解程度,基本功扎實的面試者一般都能正確的回答其中 50~60 的錯誤。但是要完全解答正確,卻也絕非易事。

    對內存操作的考查主要集中在:

    1 )指針的理解;

    2 )變量的生存期及作用范圍;

    3 )良好的動態內存申請和釋放習慣。

    在看看下面的一段程序有什么錯誤:

    swap( int* p1,int* p2 )
    {
    ? ???int *p;

    ? ???*p = *p1;
    ? ???*p1 = *p2;
    ? ???*p2 = *p;
    }

    swap 函數中, p 是一個 指針,有可能指向系統區,導致程序運行的崩潰。在 VC++ DEBUG 運行時提示錯誤 “Access Violation” 。該程序應該改為:

    swap( int* p1,int* p2 )
    {
    ? ???int p;

    ? ???p = *p1;
    ? ???*p1 = *p2;
    ? ???*p2 = p;
    }















    posted @ 2006-11-09 15:47 喬棟 閱讀(385) | 評論 (0)編輯 收藏

    試題1:

    void test1()
    {
    ? ?char string[10];
    ? ?char* str1 = "0123456789";

    ? ???strcpy( string, str1 );
    }

    試題2:

    void test2()
    {
    ? ?char string[10], str1[10];
    ? ???int i;

    ? ???for(i=0; i<10; i++)
    ? ???{
    ? ?? ???str1
    = 'a';

    ? ???}

    ? ???strcpy( string, str1 );
    }

    試題3:

    void test3(char* str1)
    {
    ? ?char string[10];

    ? ?if( strlen( str1 ) <= 10 )
    ? ???{
    ? ?? ?? ?? ?strcpy( string, str1 );
    ? ???}
    }

    解答:

    試題1字符串str1需要11個字節才能存放下(包括末尾的’\0’),而string只有10個字節的空間,strcpy會導致數組越界;

    對試題2,如果面試者指出字符數組str1不能在數組內結束可以給3分;如果面試者指出strcpy(string, str1)調用使得從str1內存起復制到string內存起所復制的字節數具有不確定性可以給7分,在此基礎上指出庫函數strcpy工作方式的給10分;

    對試題3,if(strlen(str1) <= 10)應改為if(strlen(str1) < 10),因為strlen的結果未統計’\0’所占用的1個字節。

    剖析:

    考查對基本功的掌握:

    (1)字符串以’\0’結尾;

    (2)對數組越界把握的敏感度;

    (3)庫函數strcpy的工作方式,如果編寫一個標準strcpy函數的總分值為10,下面給出幾個不同得分的答案:

    2分

    void strcpy( char *strDest, char *strSrc )
    {
      while( (*strDest++ = * strSrc++) != ‘\0’ );
    }

    4分
    void strcpy( char *strDest, const char *strSrc )

    //將源字符串加const,表明其為輸入參數,加2分
    {
      while( (*strDest++ = * strSrc++) != ‘\0’ );
    }
    7分
    void strcpy(char *strDest, const char *strSrc)??
    {
    //對源地址和目的地址加非0斷言,加3分
     assert( (strDest != NULL) && (strSrc != NULL) );

     while( (*strDest++ = * strSrc++)??!=??‘\0’ );

    }
    10分

    //為了實現鏈式操作,將目的地址返回,加3分!
    char * strcpy( char *strDest, const char *strSrc )??
    {
     assert( (strDest != NULL) && (strSrc != NULL) );
    char *address = strDest;??

     while( (*strDest++ = * strSrc++) != ‘\0’ );

    ??return address;
    }

    類似的我們可以寫出一個10分的
    strlen函數
    int strlen( const char *str )? ? //輸入參數const
    {
    ? ???assert( strt != NULL );? ? //斷言字符串地址非0
    ? ???int len;

    ? ???while( (*str++) != '\0' )
    ? ???{??
    ? ?? ?? ?? ?len++;
    ? ???}

    ? ???return len;

    }

    posted @ 2006-11-09 14:48 喬棟 閱讀(2994) | 評論 (3)編輯 收藏
    僅列出標題
    共7頁: 1 2 3 4 5 6 7 
    <2025年9月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜


    My blog is worth $0.00.
    How much is your blog worth?

    青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久se| 国产精品视频999| 久久综合影音| 亚洲夜晚福利在线观看| 亚洲国产一区二区三区在线播| 男人天堂欧美日韩| 久久爱另类一区二区小说| 欧美一区二区三区在线观看视频| 亚洲一区二区三区精品在线观看| 欧美激情bt| 国产色产综合色产在线视频| 免费在线日韩av| 国产精品久久久| 国产精品免费小视频| 国产精品一香蕉国产线看观看| 国产精品福利网站| 在线播放中文字幕一区| 亚洲精品一品区二品区三品区| 亚洲日本一区二区| 美女精品一区| 亚洲日本欧美天堂| 午夜久久电影网| 久久全球大尺度高清视频| 欧美—级a级欧美特级ar全黄| 欧美精品三区| 国产精品久久久久久模特| 国产视频欧美| 亚洲天堂av图片| 亚洲国产精品女人久久久| 午夜精品久久久久久久99热浪潮 | 最近中文字幕日韩精品| 亚洲午夜一区二区| 亚洲日韩中文字幕在线播放| 久久精品国产综合| 国产精品一区久久久| 午夜国产不卡在线观看视频| 亚洲国内自拍| 欧美视频亚洲视频| 亚洲深夜福利| 亚洲视频精选| 国产私拍一区| 久久在线观看视频| 久久久伊人欧美| 久久精品国产成人| 亚洲精品日产精品乱码不卡| 久久一二三区| 亚洲精品久久久一区二区三区| 亚洲精品美女久久7777777| 亚洲一区二区三区欧美| 久久精品国产亚洲精品| 欧美三日本三级三级在线播放| 国内一区二区在线视频观看 | 亚洲一区二区三区国产| 牛牛影视久久网| 一区二区三区成人| 欧美美女操人视频| 亚洲大片一区二区三区| 欧美在线视频网站| 宅男精品视频| 欧美日韩精品一区视频| 亚洲国产经典视频| 久久精品国产在热久久| 亚洲视频一二三| 欧美日韩精品一区二区三区四区| 亚洲欧洲美洲综合色网| 久久久久久97三级| 亚洲一区二区三区高清不卡| 欧美日本一道本| 日韩一区二区精品视频| 欧美福利一区二区| 久久久久久网址| 在线观看视频欧美| 欧美a级一区| 久久一区二区三区四区五区| 黑人中文字幕一区二区三区| 久久九九国产| 久久久久国产精品www| 国内精品久久国产| 久久综合影视| 免费成人你懂的| 亚洲人www| 亚洲欧洲在线一区| 欧美日韩精品欧美日韩精品| 夜夜嗨av一区二区三区免费区| 亚洲国产欧美一区二区三区久久| 麻豆精品在线播放| 99爱精品视频| 一区二区三区回区在观看免费视频| 欧美日韩亚洲视频一区| 亚洲天堂av高清| 午夜欧美电影在线观看| 国产精品羞羞答答| 久久午夜电影网| 欧美 日韩 国产 一区| 亚洲欧洲日产国产综合网| 国产精品毛片一区二区三区| 欧美日韩免费精品| 亚洲一区二区视频| 欧美亚洲免费高清在线观看| 黑人巨大精品欧美一区二区| 亚洲电影视频在线| 国产精品国产三级国产专播精品人| 性色av一区二区三区| 亚洲大胆人体在线| 欧美视频免费在线| 久久精品成人一区二区三区蜜臀| 久久九九精品99国产精品| 亚洲精品国产日韩| 亚洲女与黑人做爰| 亚洲精品1区2区| 国产精品99久久久久久久vr | 久久综合给合久久狠狠色| 欧美成年人视频网站| 中文高清一区| 久久欧美肥婆一二区| 一本色道久久综合狠狠躁篇的优点 | 欧美在线亚洲一区| 日韩天堂在线观看| 午夜日韩电影| 在线综合视频| 久久夜色精品国产| 欧美一级理论性理论a| 欧美va天堂在线| 欧美伊人久久| 欧美日韩国产bt| 免费久久精品视频| 国产日韩在线亚洲字幕中文| 亚洲人成绝费网站色www| 国产欧美一区二区三区视频| 亚洲精品欧美日韩专区| 国内精品国语自产拍在线观看| 一区二区激情视频| 国产精品日韩欧美一区二区| 亚洲国产成人久久综合一区| 国产一区二区三区四区在线观看 | 一区二区av在线| 亚洲国产精品高清久久久| 亚洲综合丁香| 亚洲一区二区三区在线观看视频| 免费人成精品欧美精品| 久久久一区二区三区| 国产精品午夜视频| 亚洲综合不卡| 久久国产福利国产秒拍| 欧美小视频在线| 日韩亚洲精品视频| 99精品福利视频| 亚洲一区国产精品| 欧美影院成人| 亚洲美女一区| 亚洲特色特黄| 欧美日韩亚洲另类| 亚洲精品少妇30p| 亚洲精品一区二区三区樱花| 噜噜噜久久亚洲精品国产品小说| 99国产精品视频免费观看| 性色一区二区| 欧美日韩亚洲综合| 亚洲免费大片| 欧美国产一区视频在线观看| 99热免费精品在线观看| 欧美一区2区三区4区公司二百| 欧美日韩综合网| 亚洲国产精品综合| 在线亚洲+欧美+日本专区| 美女主播视频一区| 美女91精品| 久久综合一区二区三区| 国产精品亚洲成人| 午夜视频一区二区| 亚洲九九九在线观看| 日韩一级在线| 欧美电影免费观看大全| 亚洲精品久久久久久下一站| 欧美成人国产| 久久精品成人一区二区三区| 欧美不卡一区| 亚洲人成人77777线观看| 久久大综合网| 亚洲精品日韩在线观看| 亚洲精品免费看| 亚洲夜晚福利在线观看| 国产亚洲综合在线| 欧美成人国产一区二区| 日韩视频欧美视频| 久久精品男女| 一区二区三区精品视频| 国产精品一二三视频| 久久久久久久高潮| 99成人在线| 久久亚洲精品视频| 99国产精品久久久久久久成人热| 国产精品欧美经典| 免费成人性网站| 亚洲一区久久久| 91久久香蕉国产日韩欧美9色| 久久福利视频导航| 欧美午夜视频网站| 美国十次了思思久久精品导航| 日韩视频一区二区在线观看|