国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

C++ 八股文(一)

共 11805字,需瀏覽 24分鐘

 ·

2021-09-08 10:16

多態(tài)

什么是多態(tài),有什么用

C++ 多態(tài)有兩種:靜態(tài)多態(tài)(早綁定)、動態(tài)多態(tài)(晚綁定)。靜態(tài)多態(tài)是通過函數(shù)重載實現(xiàn)的;動態(tài)多態(tài)是通過虛函數(shù)實現(xiàn)的。

  • 定義:“一個接口,多種方法”,程序在運行時才決定要調(diào)用的函數(shù)。
  • 實現(xiàn):C++ 多態(tài)性主要是通過虛函數(shù)實現(xiàn)的,虛函數(shù)允許子類重寫 override(注意和 overload 的區(qū)別,overload 是重載,是允許同名函數(shù)的表現(xiàn),這些函數(shù)參數(shù)列表/類型不同)。

注:多態(tài)與非多態(tài)的實質(zhì)區(qū)別就是函數(shù)地址是靜態(tài)綁定還是動態(tài)綁定。如果函數(shù)的調(diào)用在編譯器編譯期間就可以確定函數(shù)的調(diào)用地址,并產(chǎn)生代碼,說明地址是靜態(tài)綁定的;如果函數(shù)調(diào)用的地址是需要在運行期間才確定,屬于動態(tài)綁定。

  • 目的:接口重用。封裝可以使得代碼模塊化,繼承可以擴展已存在的代碼,他們的目的都是為了代碼重用。而多態(tài)的目的則是為了接口重用。
  • 用法:聲明基類的指針,利用該指針指向任意一個子類對象,調(diào)用相應(yīng)的虛函數(shù),可以根據(jù)指向的子類的不同而實現(xiàn)不同的方法。

用一句話概括:在基類的函數(shù)前加上 virtual 關(guān)鍵字,在派生類中重寫該函數(shù),運行時將會根據(jù)對象的實際類型來調(diào)用相應(yīng)的函數(shù)。如果對象類型是派生類,就調(diào)用派生類的函數(shù);如果對象類型是基類,就調(diào)用基類的函數(shù)。

重寫、重載與隱藏的區(qū)別

Overload 重載

在 C++ 程序中,可以將語義、功能相似的幾個函數(shù)用同一個名字表示,但參數(shù)或返回值不同(包括類型、順序不同),即函數(shù)重載。

  • 相同的范圍(在同一個類中);
  • 函數(shù)名字相同;
  • 參數(shù)不同;
  • virtual 關(guān)鍵字可有可無;

Override(覆蓋或重寫)

是指派生類函數(shù)覆蓋基類函數(shù),特征是:

  • 不同的范圍(分別位于派生類與基類);
  • 函數(shù)名字相同;參數(shù)相同;
  • 基類函數(shù)必須有 virtual 關(guān)鍵字。

注:重寫基類虛函數(shù)的時候,會自動轉(zhuǎn)換這個函數(shù)為 virtual 函數(shù),不管有沒有加 virtual,因此重寫的時候不加 virtual 也是可以的,不過為了易讀性,還是加上比較好。

Overwrite(重寫)隱藏,

是指派生類的函數(shù)屏蔽了與其同名的基類函數(shù),規(guī)則如下:

  • 如果派生類的函數(shù)與基類的函數(shù)同名,但是參數(shù)不同。此時,不論有無 virtual 關(guān)鍵字,基類的函數(shù)將被隱藏(注意別與重載混淆)。
  • 如果派生類的函數(shù)與基類的函數(shù)同名,并且參數(shù)也相同,但是基類函數(shù)沒有 virtual 關(guān)鍵字。此時,基類的函數(shù)被隱藏(注意別與覆蓋混淆)。

虛函數(shù)和純虛函數(shù)

  • 虛函數(shù):為了實現(xiàn)動態(tài)綁定。使用基類的引用或指針調(diào)用虛函數(shù)的時候會發(fā)生動態(tài)綁定。
  • 純虛函數(shù):抽象類
  • 構(gòu)造函數(shù)可以重載,但不能是虛函數(shù),析構(gòu)函數(shù)可以是虛函數(shù)。

基類為什么需要虛析構(gòu)函數(shù)?

防止內(nèi)存泄漏。想去借助父類指針去銷毀子類對象的時候,不能去銷毀子類對象。假如沒有虛析構(gòu)函數(shù),釋放一個由基類指針指向的派生類對象時,不會觸發(fā)動態(tài)綁定,則只會調(diào)用基類的析構(gòu)函數(shù),不會調(diào)用派生類的。派生類中申請的空間則得不到釋放導(dǎo)致內(nèi)存泄漏。

構(gòu)造/析構(gòu)函數(shù)調(diào)用虛函數(shù)

派生類對象構(gòu)造期間進入基類的構(gòu)造函數(shù)時,對象類型變成了基類類型,而不是派生類類型。

同樣,進入基類析構(gòu)函數(shù)時,對象也是基類類型。

所以,虛函數(shù)始終僅僅調(diào)用基類的虛函數(shù)(如果是基類調(diào)用虛函數(shù)),不能達到多態(tài)的效果。

虛函數(shù)表

  • 產(chǎn)生時間:編譯期
  • 存儲位置:只讀數(shù)據(jù)段 .rodata
  • 虛指針:類的每一個對象都包含一個虛指針(指向虛表),存在對象實例的最前面四個字節(jié)
  • 虛指針創(chuàng)建時間:構(gòu)造函數(shù)

注:虛表中的指針會指向其繼承的最近的一個類的虛函數(shù)

const 相關(guān)

如何初始化 const 和 static 數(shù)據(jù)成員?

通常在類外申明 static 成員,但是 static const 的整型( bool,char,int,long )可以在類中聲明且初始化,static const 的其他類型必須在類外初始化(包括整型數(shù)組)。

static 和 const 分別怎么用,類里面 static 和 const 可以同時修飾成員函數(shù)嗎?

static 的作用:對 static 的三條作用做一句話總結(jié)。首先 static 的最主要功能是隱藏,其次因為 static 變量存放在靜態(tài)存儲區(qū),所以它具備持久性和默認值 0。

對變量

局部變量

在局部變量之前加上關(guān)鍵字 static,局部變量就被定義成為一個局部靜態(tài)變量。

  • 內(nèi)存中的位置:靜態(tài)存儲區(qū)
  • 初始化:未經(jīng)初始化的全局靜態(tài)變量會被程序自動初始化為0(自動對象的值是任意的,除非他被顯示初始化)
  • 作用域:作用域仍為局部作用域,當定義它的函數(shù)或者語句塊結(jié)束的時候,作用域隨之結(jié)束。

注:當 static 用來修飾局部變量的時候,它就改變了局部變量的存儲位置(從原來的棧中存放改為靜態(tài)存儲區(qū))及其生命周期(局部靜態(tài)變量在離開作用域之后,并沒有被銷毀,而是仍然駐留在內(nèi)存當中,直到程序結(jié)束,只不過我們不能再對他進行訪問),但未改變其作用域。

全局變量

在全局變量之前加上關(guān)鍵字 static,全局變量就被定義成為一個全局靜態(tài)變量。

  • 內(nèi)存中的位置:靜態(tài)存儲區(qū)(靜態(tài)存儲區(qū)在整個程序運行期間都存在)
  • 初始化:未經(jīng)初始化的全局靜態(tài)變量會被程序自動初始化為 0(自動對象的值是任意的,除非他被顯示初始化)
  • 作用域:全局靜態(tài)變量在聲明他的文件之外是不可見的。準確地講從定義之處開始到文件結(jié)尾。

注:static 修飾全局變量,并未改變其存儲位置及生命周期,而是改變了其作用域,使當前文件外的源文件無法訪問該變量,好處如下:

  • 不會被其他文件所訪問,修改
  • 其他文件中可以使用相同名字的變量,不會發(fā)生沖突。對全局函數(shù)也是有隱藏作用。而普通全局變量只要定義了,任何地方都能使用,使用前需要聲明所有的 .c 文件,只能定義一次普通全局變量,但是可以聲明多次(外部鏈接)。

注意:全局變量的作用域是全局范圍,但是在某個文件中使用時,必須先聲明。

對類

成員變量

用 static 修飾類的數(shù)據(jù)成員實際使其成為類的全局變量,會被類的所有對象共享,包括派生類的對象。因此,static 成員必須在類外進行初始化(初始化格式:int base::var=10;),而不能在構(gòu)造函數(shù)內(nèi)進行初始化,不過也可以用 const 修飾 static 數(shù)據(jù)成員在類內(nèi)初始化 。因為靜態(tài)成員屬于整個類,而不屬于某個對象,如果在類內(nèi)初始化,會導(dǎo)致每個對象都包含該靜態(tài)成員,這是矛盾的。

特點:

  • 不要試圖在頭文件中定義(初始化)靜態(tài)數(shù)據(jù)成員。在大多數(shù)的情況下,這樣做會引起重復(fù)定義這樣的錯誤。即使加上#ifndef #define #endif或者#pragma once也不行。
  • 靜態(tài)數(shù)據(jù)成員可以成為成員函數(shù)的可選參數(shù),而普通數(shù)據(jù)成員則不可以。
  • 靜態(tài)數(shù)據(jù)成員的類型可以是所屬類的類型,而普通數(shù)據(jù)成員則不可以。普通數(shù)據(jù)成員的只能聲明為 所屬類類型的指針或引用。

成員函數(shù)

  • 用 static 修飾成員函數(shù),使這個類只存在這一份函數(shù),所有對象共享該函數(shù),不含 this 指針。
  • 靜態(tài)成員是可以獨立訪問的,也就是說,無須創(chuàng)建任何對象實例就可以訪問。base::func(5,3);當 static 成員函數(shù)在類外定義時不需要加 static 修飾符。
  • 在靜態(tài)成員函數(shù)的實現(xiàn)中不能直接引用類中說明的非靜態(tài)成員,可以引用類中說明的靜態(tài)成員。因為靜態(tài)成員函數(shù)不含this指針。

不可以同時用 const 和 static 修飾成員函數(shù)。

C++ 編譯器在實現(xiàn) const 的成員函數(shù)的時候為了確保該函數(shù)不能修改類的實例的狀態(tài),會在函數(shù)中添加一個隱式的參數(shù) const this*。但當一個成員為 static 的時候,該函數(shù)是沒有 this 指針的。也就是說此時 const 的用法和 static 是沖突的。

我們也可以這樣理解:兩者的語意是矛盾的。static 的作用是表示該函數(shù)只作用在類型的靜態(tài)變量上,與類的實例沒有關(guān)系;而 const 的作用是確保函數(shù)不能修改類的實例的狀態(tài),與類型的靜態(tài)變量沒有關(guān)系。因此不能同時用它們。

const的作用:

  • 限定變量為不可修改。
  • 限定成員函數(shù)不可以修改任何數(shù)據(jù)成員。
  • const 與指針:

const char *p 常量指針,可以換方向,不可以改內(nèi)容

char * const p,指針常量,不可以換方向,可以改內(nèi)容

構(gòu)造函數(shù)

構(gòu)造函數(shù)調(diào)用順序

  • 虛基類構(gòu)造函數(shù)(被繼承的順序)
  • 非虛基類構(gòu)造函數(shù)(被繼承的順序)
  • 成員對象構(gòu)造函數(shù)(聲明順序)
  • 自己的構(gòu)造函數(shù)

自身構(gòu)造函數(shù)順序

  • 虛表指針(防止初始化列表里面調(diào)用虛函數(shù),否則調(diào)用的是父類的虛函數(shù))
  • 初始化列表(const、引用、沒有定義默認構(gòu)造函數(shù)的類型)
  • 花括號里的 (初始化列表直接初始化,這個先初始化后賦值)

this 指針

創(chuàng)建時間:成員函數(shù)調(diào)用前生成,調(diào)用后清除

如何傳遞給成員函數(shù):通過函數(shù)參數(shù)的首參數(shù)來傳遞

extern 關(guān)鍵字

  • 置于變量或者函數(shù)前,以標示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時在其他模塊中尋找其定義
  • extern “C” void fun(); 告訴編譯器按C的規(guī)則去翻譯

以下關(guān)鍵字的作用?使用場景?

  • inline:在 c/c++ 中,為了解決一些頻繁調(diào)用的小函數(shù)大量消耗??臻g(棧內(nèi)存)的問題,特別的引入了 inline 修飾符,表示為內(nèi)聯(lián)函數(shù)。
  • decltype:從表達式中推斷出要定義變量的類型,但卻不想用表達式的值去初始化變量。還有可能是函數(shù)的返回類型為某表達式的的值類型。
  • volatile:volatile 關(guān)鍵字是一種類型修飾符,用它聲明的類型變量表示可以被某些編譯器未知的因素更改,比如:操作系統(tǒng)、硬件或者其它線程等。遇到這個關(guān)鍵字聲明的變量,編譯器對訪問該變量的代碼就不再進行優(yōu)化,從而可以提供對特殊地址的穩(wěn)定訪問。

淺拷貝與深拷貝

什么時候用到拷貝函數(shù)?

  • 一個對象以值傳遞的方式傳入函數(shù)體(參數(shù));
  • 一個對象以值傳遞的方式從函數(shù)返回(返回值);
  • 一個對象需要通過另外一個對象進行初始化(初始化)。

如果在類中沒有顯式地聲明一個拷貝構(gòu)造函數(shù),那么,編譯器將會自動生成一個默認的拷貝構(gòu)造函數(shù),該構(gòu)造函數(shù)完成對象之間的位拷貝。位拷貝又稱淺拷貝

默認拷貝構(gòu)造函數(shù)是淺拷貝。如果一個類擁有資源,當這個類的對象發(fā)生復(fù)制過程的時候,資源重新分配,這個過程就是深拷貝,反之,沒有重新分配資源,就是淺拷貝。

如果實行位拷貝,也就是把對象里的值完全復(fù)制給另一個對象,如 A=B。這時,如果 B 中有一個成員變量指針已經(jīng)申請了內(nèi)存,那 A 中的那個成員變量也指向同一塊內(nèi)存。這就出現(xiàn)了問題:當 B 把內(nèi)存釋放了(如:析構(gòu)),這時A內(nèi)的指針就是野指針了,出現(xiàn)運行錯誤。

C++類中成員初始化順序

成員變量在使用初始化列表初始化時,與構(gòu)造函數(shù)中初始化成員列表的順序無關(guān),只與定義成員變量的順序有關(guān)。

類中 const 成員常量必須在構(gòu)造函數(shù)初始化列表中初始化。類中 static 成員變量,只能在類外初始化(同一類的所有實例共享靜態(tài)成員變量)。

構(gòu)造過程

  • 分配內(nèi)存
  • 進行父類的構(gòu)造,按照父類的聲明順序(遞歸過程)
  • 構(gòu)造虛表指針,對虛表指針賦值
  • 根據(jù)初始化列表中的值初始化變量
  • 執(zhí)行構(gòu)造函數(shù){}內(nèi)的

構(gòu)造函數(shù)初始化列表

const 或引用類型的成員。因為 const 對象或引用類型只能初始化,不能對他們賦值。

與對數(shù)據(jù)成員賦值的區(qū)別:

  • 內(nèi)置數(shù)據(jù)類型,復(fù)合類型(指針,引用):結(jié)果和性能上相同。
  • 用戶定義類型(類類型):結(jié)果上相同,但是性能上存在很大的差別。

vector 中 size() 和 capacity() 的區(qū)別

size() 指容器當前擁有的元素個數(shù)(對應(yīng)的resize(size_type)會在容器尾添加或刪除一些元素,來調(diào)整容器中實際的內(nèi)容,使容器達到指定的大小。);capacity()指容器在必須分配存儲空間之前可以存儲的元素總數(shù)。

size 表示的這個 vector 里容納了多少個元素,capacity 表示 vector 能夠容納多少元素,它們的不同是在于 vector 的 size 是 2 倍增長的。如果 vector 的大小不夠了,比如現(xiàn)在的 capacity 是 4,插入到第五個元素的時候,發(fā)現(xiàn)不夠了,此時會給他重新分配 8 個空間,把原來的數(shù)據(jù)及新的數(shù)據(jù)復(fù)制到這個新分配的空間里。(會有迭代器失效的問題)

定義一個空類編譯器做了哪些操作

如果你只是聲明一個空類,不做任何事情的話,編譯器會自動為你生成一個默認構(gòu)造函數(shù)、一個拷貝默認構(gòu)造函數(shù)、一個默認拷貝賦值操作符和一個默認析構(gòu)函數(shù)。這些函數(shù)只有在第一次被調(diào)用時,才會被編譯器創(chuàng)建。所有這些函數(shù)都是 inline 和 public 的。

強制類型轉(zhuǎn)換

static_cast

用法:static_cast < type-id > ( expression )

q1. 為什么需要 static_cast 強制轉(zhuǎn)換?

  • void指針->其他類型指針 (不安全)
  • 改變通常的標準轉(zhuǎn)換
  • 用于類層次結(jié)構(gòu)中基類和子類之間指針或引用的轉(zhuǎn)換。進行上行轉(zhuǎn)換(把子類的指針或引用轉(zhuǎn)換成基類表示)是安全的;進行下行轉(zhuǎn)換(把基類指針或引用轉(zhuǎn)換成子類指針或引用)時,由于沒有動態(tài)類型檢查,所以是不安全的。

dynamic_cast

用法:dynamic_cast < type-id > ( expression )

dynamic_cast 主要用于類層次間的上行轉(zhuǎn)換和下行轉(zhuǎn)換,還可以用于類之間的交叉轉(zhuǎn)換(同一基類的兩個同級派生類)。

在類層次間進行上行轉(zhuǎn)換時,dynamic_caststatic_cast的效果是一樣的;在進行下行轉(zhuǎn)換時,dynamic_cast具有類型檢查的功能,比static_cast更安全。

reinpreter_cast

它可以把一個指針轉(zhuǎn)換成一個整數(shù),也可以把一個整數(shù)轉(zhuǎn)換成一個指針(先把一個指針轉(zhuǎn)換成一個整數(shù),在把該整數(shù)轉(zhuǎn)換成原類型的指針,還可以得到原先的指針值)。

const_cast該運算符用來修改類型的 const 或 volatile 屬性。除了 const  或 volatile 修飾之外, type_id 和 expression 的類型是一樣的。

常量指針被轉(zhuǎn)化成非常量指針,并且仍然指向原來的對象;常量引用被轉(zhuǎn)換成非常量引用,并且仍然指向原來的對象;常量對象被轉(zhuǎn)換成非常量對象。

volatile 關(guān)鍵字

  • 使用方法:int volatile x;
  • 作用:編譯器不再優(yōu)化。讓編譯器每次操作該變量時一定要從內(nèi)存中真正取出,而不是使用已經(jīng)存在寄存器中的值 。

內(nèi)存管理

C 內(nèi)存分配

  • malloc:在內(nèi)存的動態(tài)分配區(qū)域中分配一個長度為 size 的連續(xù)空間,如果分配成功,則返回所分配內(nèi)存空間的首地址,否則返回 NULL,申請的內(nèi)存不會初始化。
  • calloc:分配一個 num * size 連續(xù)的空間,會自動初始化為0。
  • realloc:動態(tài)分配一個長度為 size 的內(nèi)存空間,并把內(nèi)存空間的首地址賦值給 ptr,把 ptr 內(nèi)存空間調(diào)整為 size。

C++ 內(nèi)存分配:

-棧區(qū)(stack):主要存放函數(shù)參數(shù)以及局部變量,由系統(tǒng)自動分配釋放。

  • 堆區(qū)(heap):由用戶通過 malloc/new 手動申請,手動釋放。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表。
  • 全局/靜態(tài)區(qū):存放全局變量、靜態(tài)變量;程序結(jié)束后由系統(tǒng)釋放。- - 字符串常量區(qū):字符串常量就放在這里,程序結(jié)束后由系統(tǒng)釋放。
  • 代碼區(qū):存放程序的二進制代碼。

結(jié)構(gòu)體字節(jié)對齊問題?結(jié)構(gòu)體/類大小的計算?

默認字節(jié)對齊

各成員變量存放的起始地址相對于結(jié)構(gòu)的起始地址的偏移量必須是該變量的類型所占用的字節(jié)數(shù)的倍數(shù),結(jié)構(gòu)的大小為結(jié)構(gòu)的字節(jié)邊界數(shù)(即該結(jié)構(gòu)中占用最大空間的類型所占用的字節(jié)數(shù))的倍數(shù) n 字節(jié)對齊。

pragma pack(n)

  • 如果 n 大于等于該變量所占用的字節(jié)數(shù),那么偏移量必須滿足默認的對齊方式;
  • 如果 n 小于該變量的類型所占用的字節(jié)數(shù),那么偏移量為 n 的倍數(shù),不用滿足默認的對齊方式;
  • 如果 n 大于所有成員變量類型所占用的字節(jié)數(shù),那么結(jié)構(gòu)體的總大小必須為占用空間最大的變量占用的空間數(shù)的倍數(shù);否則必須為n的倍數(shù)(兩者相比,取?。?;

虛函數(shù)的大小計算

假設(shè)經(jīng)過成員對齊后的類的大小為 size 個字節(jié)。那么類的 sizeof 大小可以這么計算:size + 4*(虛函數(shù)指針的個數(shù) n)。

聯(lián)合體的大小計算

聯(lián)合體所占的空間不僅取決于最寬成員,還跟所有成員有關(guān)系,即其大小必須滿足兩個條件:

  • 大小足夠容納最寬的成員;
  • 大小能被其包含的所有基本數(shù)據(jù)類型的大小所整除。

常見例子:

class A {};: sizeof(A) = 1;
class A { virtual Fun(){} };: sizeof(A) = 4(32位機器)/8(64位機器);
class A { static int a; };: sizeof(A) = 1;
class A { int a; };: sizeof(A) = 4;
class A { static int a; int b; };: sizeof(A) = 4;

指針和引用

區(qū)別

  • 定義:指針是一個對象,引用本身不是對象,只是另一個對象的別名;
  • 指針是“指向”另外一種類型的復(fù)合類型;
  • 引用本身不是一個對象,所以不能定義引用的引用;
  • 引用只能綁定到對象上,它只是一個對象的別名,因此引用必須初始化,且不能更換引用對象。

指針

可以有 const 指針,但是沒有 const 引用(const 引用可讀不可改,與綁定對象是否為 const 無關(guān))

注:引用可以指向常量,也可以指向變量。例如int &a=b,使引用 a 指向變量 b。而為了讓引用指向常量,必須使用常量引用,如const int &a=1; 它代表的是引用 a 指向一個const int型,這個 int 型的值不能被改變,而不是引用 a 的指向不能被改變,因為引用的指向本來就是不可變的,無需加 const 聲明。即指針存在常量指針int const *p和指針常量int *const p,而引用只存在常量引用int const &a,不存在引用常量int& const a

  • 指針可以有多級,但是引用只能是一級(int **p;合法 而 int &&a 是不合法的)
  • 指針的值可以為空,但是引用的值不能為 NULL,并且引用在定義的時候必須初始化;
  • 指針的值在初始化后可以改變,即指向其它的存儲單元,而引用在進行初始化后就不會再改變了。
  • "sizeof 引用"得到的是所指向的變量(對象)的大小,而" sizeof 指針"得到的是指針本身的大?。?/section>
  • 指針和引用的自增(++)運算意義不一樣;
  • 指針使用時需要解引用(*),引用則不需要;

指針的注意點

1、指針指向常量存儲區(qū)對象

char *p="abc";此時 p 指向的是一個字符串常量,不能對 *p 的內(nèi)容進行寫操作,如 srtcpy(p,s) 是錯誤的,因為 p 的內(nèi)容為 “abc” 字符串常量,該數(shù)據(jù)存儲在常量存儲區(qū),但可以對指針 p 進行操作,讓其指向其他的內(nèi)存空間。

2、資源泄漏

char *p=new char[3]; //分配三個字符空間,p指向該內(nèi)存空間
p="ab"; //此時p指向常量“ab”,而不再是new char分配的內(nèi)存空間了,從而造成了資源泄漏
delete []p; //釋放時報錯

3、內(nèi)存越界

char *p=new char[3]; //分配三個字符空間,p指向該內(nèi)存空間
strcpy(p,"abcd"); //將abcd存處在分配的內(nèi)存空間中,由于strlen("abcd")=4>3,越界
delete []p; //釋放時出錯

new和malloc的區(qū)別

  • new 是運算符,malloc() 是一個庫函數(shù);
  • new 會調(diào)用構(gòu)造函數(shù),malloc 不會;
  • new 返回指定類型指針,malloc 返回 void* 指針,需要強制類型轉(zhuǎn)換;
  • new 會自動計算需分配的空間,malloc 不行;
  • new 可以被重載,malloc 不能。

懸空指針與野指針

  • 懸空指針:當所指向的對象被釋放或者收回,但是沒有讓指針指向NULL;
  • 野指針:那些未初始化的指針;

空指針能調(diào)用類成員函數(shù)嗎

可以調(diào)用成員函數(shù)。當調(diào)用p->func1(); 這句話時,其實就是調(diào)用 A::func1(this) ,而成員函數(shù)的地址在編譯時就已經(jīng)確定, 所以空指針也是可以調(diào)用普通成員函數(shù),只不過此時的 this 指針指向空而已,但函數(shù) fun1 函數(shù)體內(nèi)并沒有用到 this 指針,所以不會出現(xiàn)問題。

不可以調(diào)用虛函數(shù)。如果一個類中包含虛函數(shù),那么它所實例化處的對象的前四個字節(jié)是一個虛表指針,這個虛表指針指向的是虛函數(shù)表。當然,虛函數(shù)的地址也是在編譯時就已經(jīng)確定了,這些虛函數(shù)地址存放在虛函數(shù)表里面,而虛函數(shù)表就在程序地址空間的數(shù)據(jù)段(靜態(tài)區(qū)),也就是說虛表的建立是在編譯階段就完成的;當調(diào)用構(gòu)造函數(shù)的時候才會初始化虛函數(shù)表指針,即把虛表指針存放在對象前四個字節(jié)(32 位下)。試想一下,假如用空指針調(diào)用虛函數(shù),這個指針根本就找不到對應(yīng)的對象的地址,因此他也不知道虛表的地址,沒有虛表的地址,怎么能調(diào)用虛函數(shù)呢

智能指針

unique_ptr

摒棄 auto_ptr 的原因:避免潛在的內(nèi)存崩潰問題。如下代碼用 auto_ptr 的話不會出現(xiàn)問題,但 p3 是無法訪問的。

unique_ptr<string> p3 (new string ("auto");   
unique_ptr<string> p4;                       
p4 = p3;                                      // 編譯器認為非法

只允許基礎(chǔ)指針的一個所有者。unique_ptr小巧高效;大小等同于一個指針且支持右值引用,從而可實現(xiàn)快速插入和對STL集合的檢索。

注意:當程序試圖將一個 unique_ptr 賦值給另一個時,如果源 unique_ptr 是個臨時右值,編譯器允許這么做;如果源 unique_ptr 將存在一段時間,編譯器將禁止這么做。

shared_ptr

采用引用計數(shù)的智能指針,主要用于要將一個原始指針分配給多個所有者(例如,從容器返回了指針副本又想保留原始指針時)的情況。當所有的 shared_ptr 所有者超出了范圍或放棄所有權(quán),才會刪除原始指針。大小為兩個指針;一個用于對象,另一個用于包含引用計數(shù)的共享控制塊。

最安全的分配和使用動態(tài)內(nèi)存的方法是調(diào)用 make_shared 標準庫函數(shù),此函數(shù)在動態(tài)分配內(nèi)存中分配一個對象并初始化它,返回對象的 shared_ptr。

堆和棧

  • 棧 :只要棧的剩余空間大于所申請的空間,系統(tǒng)將為程序提供內(nèi)存,否則將報異常提示棧溢出。
  • 堆:首先應(yīng)該知道操作系統(tǒng)有一個記錄空閑內(nèi)存地址的鏈表,當系統(tǒng)受到程序的申請時,會遍歷該鏈表,尋找第一個空間大于所申請空間的堆。

編譯與優(yōu)化

靜態(tài)鏈接與動態(tài)鏈接

靜態(tài)鏈接:

  • 定義:在生成可執(zhí)行文件的時候(鏈接階段),把所有需要的函數(shù)的二進制代碼都包含到可執(zhí)行文件中去。
  • 特點:鏈接器需要知道參與鏈接的目標文件需要哪些函數(shù),同時也要知道每個目標文件都能提供什么函數(shù),這樣鏈接器才能知道是不是每個目標文件所需要的函數(shù)都能正確地鏈接。如果某個目標文件需要的函數(shù)在參與鏈接的目標文件中找不到的話,鏈接器就報錯了。目標文件中有兩個重要的接口來提供這些信息:一個是符號表,另外一個是重定位表。
  • 缺點:1. 程序體積會變大;2. 靜態(tài)庫有更新的話,所有可執(zhí)行文件都需要重新鏈接

動態(tài)鏈接:

  • 定義:在編譯的時候不直接拷貝可執(zhí)行代碼,而是通過記錄一系列符號和參數(shù),在程序運行或加載時將這些信息傳遞給操作系統(tǒng),操作系統(tǒng)負責(zé)將需要的動態(tài)庫加載到內(nèi)存中,然后程序在運行到指定的代碼時,去共享執(zhí)行內(nèi)存中已經(jīng)加載的動態(tài)庫可執(zhí)行代碼,最終達到運行時連接的目的。

缺點:1. 運行時加載,影響性能

靜態(tài)鏈接過程

  • 操作系統(tǒng)會讀取可執(zhí)行文件的頭部,檢查文件的合法性,然后從頭部中的 “Program Header” 中讀取每個 “Segment” 的虛擬地址、文件地址和屬性,并將它們映射到進程虛擬空間的相應(yīng)位置;
  • 操作系統(tǒng)就會把控制權(quán)交給可執(zhí)行文件的入口地址,然后程序開始執(zhí)行。

動態(tài)鏈接過程

  • 操作系統(tǒng)會讀取可執(zhí)行文件的頭部,檢查文件的合法性,然后從頭部中的 “Program Header” 中讀取每個 “Segment” 的虛擬地址、文件地址和屬性,并將它們映射到進程虛擬空間的相應(yīng)位置;
  • 操作系統(tǒng)啟動一個動態(tài)鏈接器——ld.so,它其實是個共享對象,操作系統(tǒng)同樣通過映射的方式將它加在到進程的地址空間中,加載完動態(tài)鏈接器之后,將控制權(quán)交給動態(tài)鏈接器的入口地址;
  • 動態(tài)鏈接器開始執(zhí)行一系列自身的初始化操作,然后根據(jù)當前的環(huán)境參數(shù),開始對可執(zhí)行文件進行動態(tài)鏈接工作;
  • 所有動態(tài)鏈接工作完成后,動態(tài)鏈接器就會將控制權(quán)交給可執(zhí)行文件的入口地址,程序開始正式執(zhí)行。

程序加載的內(nèi)存分布

在多任務(wù)操作系統(tǒng)中,每個進程都運行在一個屬于自己的虛擬內(nèi)存中,而虛擬內(nèi)存被分為許多頁,并映射到物理內(nèi)存中,被加載到物理內(nèi)存中的文件才能夠被執(zhí)行。

  • 代碼段(.text):用來存放可執(zhí)行文件的機器指令。存放在只讀區(qū)域,以防止被修改。
  • 只讀數(shù)據(jù)段(.rodata):用來存放常量存放在只讀區(qū)域,如字符串常量、全局const變量等。
  • 可讀寫數(shù)據(jù)段(.data):用來存放可執(zhí)行文件中已初始化的全局變量和局部靜態(tài)變量。
  • BSS 段(.bss):未初始化的全局變量和局部靜態(tài)變量以及初始化為 0 的全局變量一般放在 .bss 的段里,以節(jié)省內(nèi)存空間。static int a=0;(初始化為 0 的全局變量(靜態(tài)變量)放在 .bss)。
  • 堆:用來容納應(yīng)用程序動態(tài)分配的內(nèi)存區(qū)域。當程序使用 malloc 或 new 分配內(nèi)存時,得到的內(nèi)存來自堆。堆通常位于棧的下方。向上生長
  • 棧:用于維護函數(shù)調(diào)用的上下文。棧通常分配在用戶空間的最高地址處分配。向下生長
  • 動態(tài)鏈接庫映射區(qū):如果程序調(diào)用了動態(tài)鏈接庫,則會有這一部分。該區(qū)域是用于映射裝載的動態(tài)鏈接庫。
  • 保留區(qū):內(nèi)存中受到保護而禁止訪問的內(nèi)存區(qū)域。

溢出,越界,泄漏

溢出

1、棧溢出:棧的大小通常是 1M-2M,所以棧溢出包含兩種情況,一是分配的的大小超過棧的最大值,二是分配的大小沒有超過最大值,但是接收的 buff 比新 buff 小 ,具體情況如下。

char a[10] = {0};
strcpy(a, "abjjijjlljiojohihiihiiiiiiiiiiiiiiiiiiiiiiiiii");

注意:調(diào)試時棧溢出的異常要在函數(shù)調(diào)用結(jié)束后才會檢測到,因為棧是在函數(shù)結(jié)束時才會開始進行出棧操作。

2、內(nèi)存溢出:使用 malloc 和 new 分配的內(nèi)存,在拷貝時接收 buff 小于新 buff 時造成的現(xiàn)象。

越界

通常指數(shù)組越界

泄露

指堆內(nèi)存泄漏,是指使用 malloc 和 new 分配的內(nèi)存沒有釋放造成的

文章鏈接:https://www.zhihu.com/question/400543720

瀏覽 41
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 在线观看黄网| 五月天久久久久| 日本伊人大香蕉| 人妻人人操| 欧美操女人| 自拍偷拍视频网| 国产传媒一区| 五月丁香激情婷婷| 热久久伊人| 一大高清日韩| 国产成人在线播放| 91干| 日韩黄色在线视频| 啪啪视频m3u8| 免费在线观看中文字幕| 午夜一区| 囯产精品久久久久久久久久辛辛| 18精品爽国产冫绿帽社| 亚洲色一| 久草一区二区三区| 日本Sm/调教/捆绑/紧缚| 日韩免费在线观看视频| 精品欧美乱码久久久久久| 亚洲精品女人| 四川BBB操BBB| 成人国产片女人爽到高潮| 日韩人妻精品中文字幕免费| 大香蕉久热| 熟女少妇视频| 日韩一区二区无码视频| 国产精品扒开腿| 久久性爱视频| 无码群交东京热| www天天干| 大地资源38页| 大伊香蕉久久| 骚BBBB槡BBB槡BBB| 国产三级AV在线观看| 久久一区二区三区四区| 操B在线观看| 日韩中文字幕在线观看视频| 一级a免一级a做免费线看内裤的注意事项 | 欧美日韩在线观看一区二区三区| 天天天做夜夜夜夜爽无码| 国产区在线观看| 人妻无码一区二区三区摄像头| 蜜桃久久久亚洲精品| 国产美女在线播放| 婷婷中文字幕亚洲| 无码孕妇| 中国熟女视频| 日本久久人体视频| 日韩一级A片| 亚洲成人三区| 国产乱伦网| 国产第七页| 三级网站在线| 中文字幕99页| 国产成人精品一区二三区熟女在线 | 黄色毛片,男人天堂| 思思操在线视频| 中文字幕巨肉乱码中文乱码| 免费无码AV| 一区二区三区精品视频| www.中文字幕| 欧美操美女| 欧美一级A| 国产操比视频| 东方a在线| 一区二区三区四区五区无码| 久热免费视频在线观看| 日本在线网站| 国产一级片免费视频| 91AV免费看| 北条麻妃久久网站| 日韩一级A片| 亚洲在线播放| 日本三级无码| 18禁一区二区三区| 中文字幕在线观看AV| 欧美一级婬片AAAA毛片| 99精品视频免费看| 亚洲无码一二三| 丁香五月天av| 性爱AV在线| 高清中文字幕在线A片| 黄色视频在线观看地址| 色男人的天堂网| 亚洲三级无码在线观看| 日韩成人在线看| 日韩无码高清免费视频| 亚洲无码p| 无码字幕| 欧美日韩国产尤物主播精品| 日韩AAA| 亚洲女人被黑人巨大的原因| wwwA片| 午夜精品久久久久久久99黑人 | 青春草在线视频观看| AV无码在线播放| 精品欧美一区二区三区久久久 | 翔田千里无码A片| 欧美偷拍一区| TheAV精尽人亡av| 无码人妻一区二区三一区免费n狂飙 | 日韩av三级在线观看| 伊人网站| 热热毛片| 国精产品一区一区三区四区| 国产美女精品久久AV爽| 中文字幕三级片在线观看| 欧美经典自拍狼友| 一级操逼黄色视频| 国产av探花| 五月天色色婷婷| 久久久久久无码日韩欧美电影| 天天操天天操免费视频| 亚洲欧美日韩在线| 在线观看中文字幕| www.91av| 久久嫩草在线影院| 白虎高清无码大尺度免费在线观看 | 免费伊人大香蕉| 久久久久999| 自拍啪啪| 奇米色婷婷| 成人片毛片| 国产视频在线免费观看| 在线免费观看无码视频| 天天拍夜夜拍| AV无码免费一区二区三区不卡| 婷婷精品在线视频| 最近中文字幕在线中文字幕7| 国产精品三级视频| 亚洲精品久久久久久久久豆丁网| 日本二区三区| 亚洲成人免费在线观看| 秋霞一区| 国产熟妇码视频| 成人黄色免费网站| 中文字幕视频| 无码高清| 日韩AV在线直播| 亚洲AV无码国产精品二区| A级片毛片| 欧美三级在线观看视频| XX熟女HD| 潮喷AV| 国产在线看片| 高清无码在线视频观看| 北京熟妇搡BBBB搡BBBB| 色色热热| 久久久久久高清毛片一级| 精品视频国产| 内射免费看| 午夜A片| 在线免费黄片| 亚洲中文字幕人妻。| 日本一级理论片在线大全| 五月丁香婷婷成人| 涩涩视频成人| 69国产成人综合久久精品欧美| 午夜福利AV在线| 国产亚洲欧洲| 日韩亚洲欧美在线观看| 欧美日比视频| 欧美精品成人| 天天干夜夜爽| 日本操鸡小视频| 久久嫩草精品| 思思热免费视频| 永久m3u8在线观看| 国产做受91一片二片老头| 欧美日韩一区二区在线观看| 成人网| 大香蕉中文| 国产精品国产精品国产| 午夜精品久久久久久久久无码99热| 国产午夜福利免费视频在线观看| yw尤物在线| 美女免费AV| 综合久久中文字幕| 亚洲第1页| 成人三级av| 国产无码内射| 欧美性爱一级视频| jizz免费观看| 北条麻妃91人妻互换| AV黄页| av五月| 久久综合五月| 手机AV在线| 久久久亚洲AV| 九九re精品视频在线观看 | 亚洲中文字幕在线视频观看| 久久噜噜噜精品国产亚洲综合| 日本午夜视频| 中文字幕国产| 四库影库| 日韩亚洲精品中文字幕| 免费av片| 岛国A片| 毛片一区二区| 激情导航| 99视频自拍| 一级黄色性爱视频| 国产一级A| 一道本一区二区| 大香蕉福利导航| 深爱激情综合| 五月天激情av| 在线免费观看网站| 亚洲中文字幕高清| 日本一区中文字幕| 东北操逼视频| 人妻熟女一区二区| 538在线视频| 国产二区视频| 天天干天天肏| 日韩精品一区二区三区黄冈站长| 欧美国产日韩在线| 精品夜夜澡人妻无码AV| 国产三级一区| 日韩视频久久| 四川少扫搡BBBBB搡B| 91视频网址| 大鸡巴视频在线| 亚洲无码中文字幕在线| 搡女人视频国产一级午夜片| 爱搞搞就搞搞| 97人妻碰碰中文无码久热丝袜 | 密臀久久| 伊人大香蕉久久| 九九精品12| 足交在线播放| 日本中文字幕不卡| 欧美精品秘一区二区三区蜜臀| 亚洲色在线视频| 伊人大香焦网| 亚洲毛片在线| 无码电影网| 欧美成人一区二区三区片| 99久久婷婷国产综合| 午夜精东影业传媒在线观看| 欧美性爱一区二区| 中文亚洲精品字幕电影| 日本黄色视频在线免费观看| 91精品国产三级| 在线看A片| 超碰观看| 一二区免费视频| 欧美人操逼| 永久免费不卡在线观看黄网站| 亚洲国产另类无码| 中文有码在线| 日韩一级免费| 亚洲色a| AV无码免费一区二区三区不卡| 亚洲成人三级片| 老熟女AV| 日韩毛片在线看| 豆花视频成人精品视频| 激情AV在线观看| 91理论片| 蜜桃av秘无码一区二区三欧| 亚洲欧美综合| 美女人人操| 亚洲精品一级二级三级| 伊人在线视频| 特一级黄色| 婷婷五月六月丁香| 中文字幕一区二区三区四区| 大香蕉一本| 最新国产精品| 日本成人电影| 精品国产999久久久免费| 热久久91| 草逼免费视频| 99热在线观看者| 欧美XXX视频| 97爱| 久久久久久久久黄色| 蜜桃Av噜噜一区二区三| 国产天天操| 免费黄视频在线观看| 69精品无码成人久久久久久| 国产亚洲午夜久久久成人电影| 午夜精品久久久久久久91蜜桃 | 亚洲无码色婷婷| 一区成人| 丁香六月婷婷久久综合| 免费观看一区| 潮喷av| 久久视频一二| 青青操成人在线视频| yw·163.爆乳尤物com| 国产激情123区| a√天堂中文在线8| 亚洲黄色网址| 青青操青青干| 91在线免费视频观看| 杨晨晨不雅视频| 国产日韩中文字幕| www.18禁| 午夜免费AV| 911国产精品| 一级久久| 欧美污视频在线观看| 成人视频无码| 午夜美女视频| 2025AV在线| 中文无码av| 日韩国产三级| 国产成人av网站| 夫妻无码| 亚州天堂网| 伊人在线视频| 国产精品久久久久久久久久久久久久久久 | h片在线免费观看| 国产精品1区2区3区| 国产色在线| 水蜜桃视频网站在线观看| 91毛片在线观看| 日韩性爱在线| 成人免费网站在线观看| 成人免费视频18| 五月天婷婷在线观看视频| 欧美老熟女18| 午夜操人妻| 色五月激情网| 国精产品一区二区三区| 在线观看黄色网页| 淫香淫色综合网| 欧美日韩免费在线视频| 久久99久久99精品免视看婷婷 | 欧美怡春院| 色悠悠国产| 亚洲成人高清无码| 久久毛片基地| 91在线播放视频| 97av视频| 91中文字幕+乱码| 免费福利在线视频| 人妻av中文字幕| 国产亚洲aⅴ| 五月天色色网站| 就要操| 久色视频在线| 99国产在线观看| 天堂va欧美ⅴa亚洲va一夜| 人妻av在线| 久久国产精彩视频| 91av在线免费观看| 婷婷视频导航| 东京热av在线| 狼友视频免费观看| 大黑人荫蒂BBBBBBBBB| AAA三级视频| 91久久综合| 91香蕉在线观看视频在线播放| 欧美伦妇AAAAAA片| 成人做爱免费网站| 手机看片1024国产| A一级横色大片| 日日操夜夜| 在线观看日韩三级片av| 福利视频一区二区| 三级丁香在线| ThePorn-成人网站入口| 夫妻成人免费看片一区二区| 人人干97| 色图在线观看| 免费观看一区二区三区| 日本一级片在线播放| 亚洲天堂精品视频| 亚洲无码激情在线| 91麻豆精品国产91久久久吃药 | 亚洲在线一区二区| 午夜无码电影| 麻豆传媒在线| 久久99九九| 激情久久AV一区AV二区AV三区 | av色图| 亚洲无码小电影| 五月天啪啪视频| 不卡AV在线| 最近中文字幕在线观看| 国产伦精品一区二区三区妓女| 亚洲一区二区久久| 91嫩草欧美久久久九九九| 亚洲自拍中文字幕| 羞羞色院91蜜桃| 无码黄页| 成人h网站在线观看| 丰满人妻精品一区二区在线| 日本少妇激情视频| 日韩成人一区二区三区| 狠狠色噜噜狠狠狠888| 亚洲v在线| 亚洲69v久久久无码精品| 亚洲AV免费在线观看| 在线观看www视频| 91性爱视频| 大鸡巴免费视频| 久久久18禁一区二区三区精品| 欧美性猛交XXXX乱大交| 亚洲欧美久久久久久久久久久久| 亚洲无码av在线播放| 色综合天| 日本二区| 毛片成人网| 一区二区Av| 国产灬性灬淫灬欲水灬| 婷婷日韩在线| 亚洲福利视频在线| 国产无码性爱| 中文字幕在线免费观看| 久久做爱视频| 亚洲精品另类| 国产二级片| 欧美成在线视频| 91青青草| 免费AV毛片| 蜜乳AV一区二区三区| 国产精品久久久久久久久久两年半| 精品一区二区三区四区五区| 久久久久久久久久久高清毛片一级| 亚洲第一综合| 日本三级片免费观看| 操逼在线播放| 国产精品香蕉国产| 国产乱子伦-区二区三区| 高潮流水视频| 日韩va亚洲va欧美va高清| 91精品久久久久久粉嫩| 成人天堂一区二区三区| 成人网在线视频| 亚洲不卡中文字幕| 国产免费av在线观看| 91人妻人人爽人人爽| 色逼逼网| 亚洲高清国产欧美综合s8| 中文乱伦视频| 国产乱子伦真实精品!| 免费v片| 亚洲中文综合| 在线免费观看av片| 国产免费一区二区在线A片视频| 国产毛片777777| 91香蕉国产成人App| 91资源在线| 成年人黄色视频网站| 成人操B视频在线观看| 北条麻妃无码中文| 中文字幕在线永久| 日本一级按摩片免费观看| 亚洲午夜久久久久久久久红桃| 91大神在线免费观看| 日本色综合| 日本毛片在线观看| 亚洲最新在线观看| 91久| 欧美高清无码视频| AV操逼网| 最好看的2019中文在线大全电影| 亚洲一区二区精品| 中国熟睡妇BBwBBw| 大香蕉伊人在线视频| 依人综合网| 日韩无码一| 大香蕉久久久| 成人精品无码免费视频| 免费在线观看AV片| 在线观看免费完整版中文字幕视频| 欧美一级婬片AAAA毛片| 北条麻妃91人妻互换| 精品无码免费看专区| 成人国产AV| 精品国产毛片| 亚洲视频二| 99综合网| 日韩综合在线视频| 国产欧美精品一区二区三区| 激情六月婷婷| 88AV在线播放| 国产一级黄色大片| 三级乱伦86丝袜无码| 无码不卡在线观看| 国产69精品久久| 99久久亚洲精品日本无码| 国产免费视频| 一区成人| 丁香婷婷五月基地| 欧美午夜精品一区二区蜜桃| 欧美中文字幕在线视频| 熟妇槡BBBB槡BBBB图| 草逼免费看| 婷婷综合| 中文字幕精品无码一区二区| 成熟的国模冰莲[2]| 成人午夜A片免费看| 狠狠操综合网| 日韩无码电| 欧美日韩日逼视频| 无码日韩av| 強姦婬片A片AAA毛片Mⅴ| 亚洲国产精品午夜福利| 99re这里只有精品6| 日都一级A片| 亚洲国产高清无码| 最新无码在线| 亚欧在线视频| 99欧美| 99视频久久| 无码aⅴ| 天天日穴| 亚洲福利| 亚洲高清无码一区| 日韩在线视频一区二区三区 | 国产精品特级毛片| 久久久999精品日韩一区二区| 1插菊花综合| 二区精品| 青青大香蕉| 思思久久高颜值| 高清免费无码视频| 国产乱伦对白| 九色欧美| 亚洲最新AV在线| 91乱伦| 婷婷五月av| 亚洲精品久久久久久久久久久| 99久久精品国产成人一区二区| 免费看特别黄色视频| 黄色在线免费看| 亚洲无码AV一区二区三区| 中文字幕无码成人| 在线观看中文字幕无码| 好吊视频一区二区三区红桃视频you | 日韩aaaa| 北条麻妃无码在线观看| 亚洲国产精品久久人人爱| 亚洲日韩精品无码| 蜜桃av久久久亚洲精品| 97视频在线| 大香蕉一级片| 波多野结衣av中文字幕| 老鸭窝成人视频| 男人操女人视频网站| 黄网国产手机在线观看| 国产91无码精品秘入口新欢| 欧美精产国品一区二区区别 | 国产三级午夜理伦三级| 免费欧美性爱视频| 亚洲手机在线播放| 日韩黄色视频在线观看| 久久嫩草在线影院| 五月丁香欧美| 操操操影院| 黄色电影一区二区| 人人摸在线视频| 91N视频| 大秀91视频| 日韩无码一级| 精品视频国产| 日韩亚洲欧美在线| 桃花岛tⅴ+亚洲品质| 99精品国产一区二区| 91白浆肆意四溢456| av无码aV天天aV天天爽| ww国产| 免费无码在线| 91香蕉在线视频| 美女黄视频网站| 欧美精品欧美精品系列| 久久毛久久久j| 99re视频在线观看| 午夜丁香| 91人妻人人澡人人爽人人精品乱| 亚洲人成人无码一区二区三区| 特级西西444www高清大胆免费看| 淫荡五月天视频导航| 国产精品视频免费| 国产精品精品| 国产午夜成人| 欧美一级在线免费观看| 成人午夜无码| 男人的天堂视频在线| 亚洲三级自拍| 中文无码日韩| 91av在线播放| 狠狠操在线视频| 五十路无码| 91免费看片| 人人妻人人玩人人澡人人爽| 羽月希奶水饱胀在线播放| 在线日韩国产| 国产一区在线播放| 激情一级片| 欧美日逼| 高潮视频在线观看| 国产婷婷久久| 成人福利网| 日本翔田千里奶水| 亚洲网站免费| 熟妇槡BBBB槡BBBB图| 天天激情站| 成人网站大香蕉| 国产伦精品一区二区三区色大师| 亚洲国产精品成人网站| 正在播放李彩斐被洋老外| 午夜天堂| 91乱子伦国产乱子伦| 一二三四在线视频| 狠狠操狠狠撸| 国产真实露脸乱子伦对白高清视频| 丁香五月情| 亚洲aⅤ| 久草在| 亚洲无码中文字幕在线| 亚洲无吗视频| 狠狠狠久久久| 无码迷穴| 另类av| 日逼视频免费看| 日产久久视频| 伊人东京热| 自拍偷拍视频网站| 水蜜桃视频免费观看| 狠狠干中文字幕| 日本欧美一级| 无码视频在线看| 国产一a毛一a免费观看| 成人在线三级片| 性爱av在线| 99久久夜色精品国产亚洲| 国产91无码| 五月婷在线视频| 欧美激情视频一区| 欧美一级特黄真人做受| 中文字幕理论片| 日本一区二区三区视频在线观看| 亚洲韩国国产| 亚洲日韩中文字幕无码| 国产精品秘精东影业| AV影院在线| 汇聚全球淫荡熟女| 成人精东影业JDAV3密友| 在线观看一区| 男人色天堂| 国产精品大香蕉| 91啪啪| 天天操操操| 欧美视频一区二区三区| 黄色电影免费在线观看| www.bbbb| 91久久爽久久爽爽久久片| 中文字幕+乱码+中文乱码91| 91九色口爆吞精| 中日韩欧美一级A片免费| 亚洲第二页| 亚洲无码综合| 韩日毛片| 青青草无码视频| 亚洲vs无码秘蜜桃少妇| 波多野成人无码精品视频| 一区二区三区网| 亚洲国产三级片| 无码一道本一区二区无码| 台湾成人综合网| 国产精品视频免费看| 欧美在线视频免费观看| 青青伊人久久| 国产精品久久久久久久久久九秃| 水蜜桃网| 五月婷婷一区| 日韩中文字幕一区| 黄片免费观看视频| 91亚洲电影| av在线免费播放| 91久久久久| 欧美视频一区二区三区| 无码乱伦| 色婷婷黄色| 91人妻无码一区二区久久| 国产操屄网| 久久久久久久久久久久久久久久久久免费精品分类视频 | 边摸边插| 国产福利在线导航| 亚洲高清无码视频在线播放| 久久久77| av无码精品一区| 黄色不卡| 老熟女导航| 欧美黄色网址| 日韩高清无码不卡| 一级特黄大片录像i| www.黄色视频| 日逼视频免费观看| 欧美成人毛片| 免费看日韩视频| 天天日天天操天天| 国产黄色视频观看| 日本久久不卡| 内射视频网| 欧美成人性爱在线| 国产日女人| 亚洲免费观看高清完整版| 国产精品粉嫩福利在线| 国产日韩欧美视频| 久草视频福利| 一二区视频| 成人欧美大片黄18| 野花AV| 伊人黄色| 一级黄色视频日逼片| 亚洲成人a片| www.大香蕉伊人| 日韩一级片在线| 开心激情婷婷| 亚洲乱伦图片| 国产无遮挡A片又黄又爽小直播| 丰满人妻一区二区三区蜜桃视频| 成人无码毛片| 一级片免费观看| 网站色色免费看| 成人免费福利| 人妻无码精品蜜桃| 国产真实乱婬A片久久久老牛| 激情久久AV一区AV二区AV三区 | 女人久久久| 久久不卡| 日本处女性高潮喷水视频| 久久久久久久久久免费视频| 毛片9| 超碰九色| 亚洲免费视频网| 无码99| 一级黄色电影在线观看| 日韩无码影院| 国产欧美精品成人在线观看| 成人伊人AV| 欧美色图在线观看视频| 97久久精品| 欧美第二页| 亚洲加勒比在线| 天天日天天色| 亚洲免费在线| a√在线视频| 国产69视频在线观看| 北条麻妃在线一区二区| 国产视频一区二区在线观看| 色婷婷激情| 久久66| 91成人情欲影视网| 欧美在线观看一区二区| 99热999| 69精品在线| 国产精品色视频| 日韩免费高清无码| 成人网站在线看| 精品人妻一区二区乱码一区二区| 久久久一级| 嫩BBB槡BBBB槡BBBB二一| 自拍超碰在线| 牛牛精品视频| 小處女末发育嫩苞AV| 日韩A片一级无码免费蜜桃| 无码日韩av| 免费国产精品视频| 99日韩精品| 一级黄片免费观看| 亚洲色五月| 欧美性生活| 欧美精品操逼| 欧美午夜激情视频| 天天拍夜夜拍| 欧美性爱一区二区三区| 少妇bbw搡bbbb搡bbbb| 中文字幕一本道| 逼特逼在线视频| 天天综合干| 亚洲精品视频无码| mm131亚洲国产精品久久| 亚洲视频99| 男人V天堂| 无码一区二区三区四区五区六区| 日本一级黃色大片看免费| 特级西西人体444WWw高清大胆| 亚洲视频在线观看中文字幕| 日本一级特黄大片AAAAA级| 久久久久久久麻豆| 久久午夜福利| 国产AV一区二区三区| 精品交换一区二区三区无码| 黄色在线播放| 做爰视频毛片蜜桃| 在线一级片| 91白浆肆意四溢456| 99久免费视频| 国产人妻在线| 亚洲视频二区| 少妇被躁到高潮无码| 国产一级乱伦| 国产黄色视频免费看| 六月婷婷激情| wwwA片| 北条麻妃二区三区| 一色综合| 日韩久久电影| 日日撸| 婷婷五月免费视频| 日本天堂在线视频| 蜜桃AV在线播放| 中文字幕第4页| 亚洲精品无码在线播放| 国产精品扒开腿做爽爽爽视频| 精品成人一区二区三区| 777777视频| 无码乱伦| 亚洲av大片| 日韩黄色片网站| AV在线直播| 免费中文字幕视频| a视频免费看| 粉嫩小泬BBBB免费看-百度| 久久精品国产视频| 亚洲高清无码播放| 丁香五月婷婷基地| 国产a毛片| 精品无码一区二区三区爱与| 亚洲Av在线观看| 国产噜噜噜噜久久久久久久久| 日本高清黄色视频| 免费操逼| 无码激情18激情视频| 久久嫩草国产成人一区| 女人的天堂av| 4080yy午夜理论片成人| 青草久久网| 91草视频| 国产xxxx| 9999re| 这里只有精品久久| 免费无码成人片在线观看在线| 激情无码av| 波多野结衣无码在线视频| 欧美视频精品| 鲁一鲁视频| 刘玥一级婬片A片AAA| 国产日韩在线视频| 无码乱伦| 秋霞午夜久久| 欧洲成人在线观看| 亚洲免费婷婷| 成人才看的在线视频| 人人爽久久涩噜噜噜网站| 久久大鸡吧| 日本特黄一级片| av一级| 黄色AA片| 亚洲中文字幕在线观看免费 | 黄片免费观看| 日韩亚洲在线视频| 丁香五月天在线| 美女黄网站| 青春草在线视频免费观看| 国产免费看片| 久久这里有精品| 久久久女人| 国产91精品在线观看| 在线人妻| 爱爱爱网址| 青青操网| 国产探花视频在线免费观看| 亚洲二区视频| 七十路の高齢熟女千代子| 小佟丽娅大战91哥| 大地av| 啊啊啊国产| 999久久久久| 中文字幕亚洲视频在线观看| 91青青草视频| 欧美日韩中国操逼打炮| 国产成人三级视频| 久操免费在线视频| 91逼逼| 欧美后门菊门交3p、| 99成人国产精品视频| 亚洲国产成人自拍| 91成人在线电影| 亚洲资源在线观看| 蜜乳AV一区二区三区| 91男女| 一区二区久久| 国产精品国产三级国产| 欧美一级婬片AAAA毛片| 六月丁香欧美综合| 中文字幕AV一区| 国产一区二区三区免费|