国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++面試八股文:什么是空指針/野指針/懸垂指針?

這篇具有很好參考價值的文章主要介紹了C++面試八股文:什么是空指針/野指針/懸垂指針?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第30面:

面試官:什么是空指針?

二師兄:一般我們將等于0/NULL/nullptr的指針稱為空指針。空指針不能被解引用,但是可以對空指針取地址。

int* p = nullptr;	//空指針
*p = 42;	//空指針不可以解引用
int** pp = &p	//空指針可以取地址

面試官:你知道0/NULL/nullptr三者之間的區(qū)別嗎?

二師兄:雖然三者都能定義空指針,但三者類型不同。

二師兄:0int類型,NULL在g++下是一個宏定義,而nullptr是有類型的;

#define NULL ((void *)0)

typedef decltype(nullptr) nullptr_t;

sizeof(0);// 4
sizeof(NULL);//8
sizeof(nullptr);//8

二師兄:在函數(shù)重載時,會根據(jù)實參的類型選擇重載函數(shù):

#include <iostream>
void fun(int) {std::cout << "int" << std::endl;}
void fun(int*) {std::cout << "int*" << std::endl;}
void fun(nullptr_t) {std::cout << "nullptr_t" << std::endl;}
int main(int argc, char const *argv[])
{
    fun(0);	//編譯通過,匹配fun(int)
    fun(NULL);	//編譯失敗,可以匹配 fun(int) fun(int*) fun(nullptr_t)
    fun(nullptr);	//編譯成功,匹配fun(nullptr_t)
    return 0;
}

二師兄:在C++11之后,建議使用nullptr定義空指針,因為它時有類型的,編譯器能夠對它進行類型檢查。

面試官:什么是野指針?

二師兄:野指針突出一個野字,這個野就是狀態(tài)未知的。它可能指向一塊未知的區(qū)域:

int* p;		//野指針,指針未初始化
*p = 42;	//對野指針解引用,未定義的操作

面試官:什么是垂懸指針?

二師兄:垂懸指針是指指針指向的內容已被釋放,指針指向的對象的生命周期已結束。

int* p = new int(42);
delete p;
*p = 1024;	//垂懸指針,指針指向的對象已被釋放

int* p = nullptr;
{
    int i = 42;
    p = &i;
}
*p = 1024; //垂懸指針,指向的對象的生命周期已結束

面試官:如何解決空指針、野指針、垂懸指針帶來的問題?

二師兄:主要可以從有以下幾點入手:

1.在解引用指針之前,要判斷指針是否為空。(解決空指針解引用問題)

2.對于定義的指針,一定要進行初始化(=nullptr)。(解決野指針問題)

3.對于釋放過內容的指針,立即將指針置為nullptr。(解決垂懸指針、指針二次釋放問題)

4.要注意長生命周期的指針不能指向短生命周期的對象。(解決垂懸指針問題)

5.C++11之后使用智能指針。

面試官:好的。那你知道什么是內存泄漏(memory leak)嗎?

二師兄:內存泄漏是指分配的內存空間沒有被正確釋放的情況。常見的情況有malloc沒有free,new沒有deletenew[]delete混用。

面試官:如何防范內存泄漏問題?

二師兄:最簡單的辦法是使用資源獲取即初始化(RAII)技術將資源放在類中管理,在類構造時獲取資源(malloc/new),在類的析構函數(shù)中釋放資源(free/delete),使用C++的構造和析構機制保證資源的正確申請和釋放。

二師兄:我們常用的std::shared_ptrstd::unique_ptrstd::lock_guard就是采用這種技術管理資源。

面試官:最后一個問題,如何查找程序中是否出現(xiàn)了內存泄漏?

二師兄:只要有兩種方法:

1.自己動手:把所有使用malloc/free的地方改成new/delete,重載全局的newdelete,并加入申請和釋放內存容量的統(tǒng)計邏輯。

2.采用工具:可以使用諸如Valgrind(在Linux上)或Dr. Memory(在Windows上)等內存調試工具來檢測內存泄漏。這些工具可以在運行程序時檢測內存泄漏,并提供詳細的報告和調試信息。

面試官:好的。今天的面試結束,請等消息。

今天的面試到這里就結束了,祝大家周末愉快~

關注我,帶你21天“精通”C++?。ü奉^)文章來源地址http://www.zghlxwxcb.cn/news/detail-511914.html

到了這里,關于C++面試八股文:什么是空指針/野指針/懸垂指針?的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • C++面試八股文:什么是左值,什么是右值?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第16面: 面試官:什么是左值,什么是右值? 二師兄:簡單來說,左值就是可以使用 符號取地址的值,而右值一般不可以使用 符號取地址。 二師兄:一般左值存在內存中,而右值存在寄存器中。 二師兄:嚴格意義上分,右值

    2024年02月09日
    瀏覽(17)
  • C++面試八股文:override和finial關鍵字有什么作用?

    C++面試八股文:override和finial關鍵字有什么作用?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第22面: (二師兄好苦逼,節(jié)假日還在面試。。。) 面試官:C++的繼承了解嗎? 二師兄:(不好意思,你面到我的強項了。。)了解一些。 面試官:什么是虛函數(shù),為什么需要虛函數(shù)? 二師兄:虛函數(shù)允許在基類中定義一個函

    2024年02月10日
    瀏覽(20)
  • C++面試八股文:技術勘誤

    C++面試八股文:技術勘誤

    不知不覺,《C++面試八股文》已經更新30篇了,這是我第一次寫技術博客,由于個人能力有限,出現(xiàn)了不少紕漏,在此向各位讀者小伙伴們致歉。 為了不誤導更多的小伙伴,以后會不定期的出勘誤文章,請各位小伙伴留意。 在《C++面試八股文:C++中,設計一個類要注意哪些東

    2024年02月11日
    瀏覽(30)
  • C++面試八股文:如何避免死鎖?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第31面: 面試官:什么是鎖?有什么作用? 二師兄:在C++中,鎖(Lock)是一種同步工具,用于保護共享資源,防止多個線程同時訪問,從而避免數(shù)據(jù)競爭和不一致。 面試官:有哪些鎖? 二師兄:從種類上分,可以分為普通鎖、

    2024年02月12日
    瀏覽(28)
  • C++面試八股文:用過STL嗎?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第21面: 面試官:用過STL嗎? 二師兄:(每天都用好嗎。。)用過一些。 面試官:你知道STL是什么? 二師兄:STL是指標準模板庫( Standard Template Library ),是C++區(qū)別于C語言的特征之一。 面試官:那你知道STL的六大部件是什么

    2024年02月09日
    瀏覽(15)
  • C++面試八股文:了解位運算嗎?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第12面: 面試官:了解位運算嗎? 二師兄:了解一些。(我很熟悉) 面試官:請列舉以下有哪些位運算? 二師兄:按位與( )、按位或( | )、按位異或( ^ ),按位取反( ~ )、左移( )和右移( )。 面試官:好的。那你

    2024年02月08日
    瀏覽(24)
  • java八股文面試[多線程]——什么是守護線程

    java八股文面試[多線程]——什么是守護線程

    ?知識來源: 【2023年面試】什么是守護線程_嗶哩嗶哩_bilibili

    2024年02月11日
    瀏覽(27)
  • C++面試八股文:std::vector了解嗎?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第23面: 面試官: vector 了解嗎? 二師兄:嗯,用過。 面試官:那你知道 vector 底層是如何實現(xiàn)的嗎? 二師兄: vector 底層使用動態(tài)數(shù)組來存儲元素對象,同時使用 size 和 capacity 記錄當前元素的數(shù)量和當前動態(tài)數(shù)組的容量。如果

    2024年02月10日
    瀏覽(30)
  • C++面試八股文:std::deque用過嗎?

    C++面試八股文:std::deque用過嗎?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第26面: 面試官: deque 用過嗎? 二師兄:說實話,很少用,基本沒用過。 面試官:為什么? 二師兄:因為使用它的場景很少,大部分需要性能、且需要自動擴容的時候使用 vector ,需要隨機插入和刪除的時候可以使用 list 。

    2024年02月11日
    瀏覽(25)
  • C++面試八股文:如何實現(xiàn)一個strncpy函數(shù)?

    C++面試八股文:如何實現(xiàn)一個strncpy函數(shù)?

    某日二師兄參加XXX科技公司的C++工程師開發(fā)崗位第31面: 面試官: strcpy 函數(shù)使用過吧? 二師兄:用過。 面試官:這個函數(shù)有什么作用? 二師兄:主要用做字符串復制,將于字符從一個位置復制到另一個位置。 面試官: strncpy 函數(shù)也使用過吧,和 strcpy 有何不同? 二師兄:

    2024年02月11日
    瀏覽(38)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包