亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++野指針的具體實(shí)現(xiàn)

 更新時(shí)間:2024年03月19日 09:23:42   作者:Love coldplay  
野指針就是指針指向的不是一個(gè)有效(合法)的地址,本文主要介紹了C++野指針的具體實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

野指針就是指針指向的不是一個(gè)有效(合法)的地址。
在程序中,如果訪問(wèn)野指針,可能會(huì)造成程序的崩潰。

出現(xiàn)野指針的情況主要有三種:

1)指針在定義的時(shí)候,如果沒(méi)有進(jìn)行初始化,它的值是不確定的(亂指一氣)。
2)如果用指針指向了動(dòng)態(tài)分配的內(nèi)存,內(nèi)存被釋放后,指針不會(huì)置空,但是,指向的地址已失效。
3)指針指向的變量已超越變量的作用域(變量的內(nèi)存空間已被系統(tǒng)回收),讓指針指向了函數(shù)的局部變量,或者把函數(shù)的局部變量的地址作為返回值賦給了指針。

規(guī)避方法:

1)指針在定義的時(shí)候,如果沒(méi)地方指,就初始化為nullptr。
2)動(dòng)態(tài)分配的內(nèi)存被釋放后,將其置為nullptr。
3)函數(shù)不要返回局部變量的地址。
注意:野指針的危害比空指針要大很多,在程序中,如果訪問(wèn)野指針,可能會(huì)造成程序的崩潰。是可能,不是一定,程序的表現(xiàn)是不穩(wěn)定,增加了調(diào)試程序的難度。

實(shí)例1

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

int main()
{
	int *p = (int *)(0x0000000955523);
	cout << "*p=" << *p << endl;
}

實(shí)例2

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

int *func()
{
	int a = 3;
	cout << "a=" << a << "    a的地址為" << &a << endl;
	return &a;
}


int main()
{

	//  1.直接操作非法地址
	//int *p = (int *)(0x0000000955523);
	//cout << "*p=" << *p << endl;

	//  2.如果用指針指向了動(dòng)態(tài)分配的內(nèi)存,內(nèi)存被釋放后,指針不會(huì)置空,但是,指向的地址已失效。


	//int *p = new int(3);
	//cout << "p=" << p << "*p=" << *p << endl;

	//delete p;
	//cout << "p=" << p << "*p=" << *p << endl;



	//3.指針指向的變量已超越變量的作用域(變量的內(nèi)存空間已被系統(tǒng)回收),
	//	讓指針指向了函數(shù)的局部變量,或者把函數(shù)的局部變量的地址作為返回值賦給了指針。

	int *pp = func();//函數(shù)的局部變量的地址作為返回值賦給了指針
	cout << "pp=  " << pp << "     *pp= " << *pp << endl;
}

到此這篇關(guān)于C++野指針的具體實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C++野指針內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 手拉手教你如何理解c/c++中的指針

    手拉手教你如何理解c/c++中的指針

    當(dāng)你對(duì)C越來(lái)越熟悉時(shí),你會(huì)發(fā)現(xiàn)把與指針攪和在一起的"類(lèi)型"這個(gè)概念分成"指針的類(lèi)型"和"指針?biāo)赶虻念?lèi)型"兩個(gè)概念,是精通指針的關(guān)鍵點(diǎn)之一,這篇文章主要給大家介紹了關(guān)于c/c++中指針的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • C語(yǔ)言大小端模式、判斷大小端、大小端轉(zhuǎn)換方法詳解

    C語(yǔ)言大小端模式、判斷大小端、大小端轉(zhuǎn)換方法詳解

    這篇文章主要介紹了C語(yǔ)言大小端模式、判斷大小端、大小端轉(zhuǎn)換的相關(guān)資料,大端和小端是數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式,大端模式下高字節(jié)存于低地址,小端模式則相反,大小端問(wèn)題由數(shù)據(jù)類(lèi)型多字節(jié)存儲(chǔ)引起,不同選擇形成不同存儲(chǔ)模式,需要的朋友可以參考下
    2024-10-10
  • C++哈希應(yīng)用之位圖,哈希切分與布隆過(guò)濾器詳解

    C++哈希應(yīng)用之位圖,哈希切分與布隆過(guò)濾器詳解

    這篇文章主要為大家詳細(xì)介紹了C++哈希應(yīng)用中的位圖、哈希切分與布隆過(guò)濾器,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下
    2023-04-04
  • C語(yǔ)言基于循環(huán)鏈表解決約瑟夫環(huán)問(wèn)題的方法示例

    C語(yǔ)言基于循環(huán)鏈表解決約瑟夫環(huán)問(wèn)題的方法示例

    這篇文章主要介紹了C語(yǔ)言基于循環(huán)鏈表解決約瑟夫環(huán)問(wèn)題的方法,簡(jiǎn)單描述了約瑟夫環(huán)問(wèn)題并結(jié)合實(shí)例形式分析了C語(yǔ)言使用循環(huán)鏈表解決約瑟夫環(huán)問(wèn)題的具體操作技巧,需要的朋友可以參考下
    2018-01-01
  • C++中?‘=default?’及‘?=delete?’的使用

    C++中?‘=default?’及‘?=delete?’的使用

    這篇文章主要介紹了C++中?=default?及?=delete?使用,使用=default和=delete可以控制編譯器默認(rèn)函數(shù)體的使用,下面我們就來(lái)看看具體的室友方法吧,需要的朋友也可以參考一下
    2021-12-12
  • C++ 名稱(chēng)空間詳情

    C++ 名稱(chēng)空間詳情

    當(dāng)一個(gè)項(xiàng)目變得大型之后,我們會(huì)引入很多的庫(kù),這么一來(lái)兩個(gè)庫(kù)很可能會(huì)定義List、Tree、Node同名的類(lèi),編譯器要是不考慮這情況的話,程序員調(diào)用時(shí)就會(huì)出現(xiàn)沖突問(wèn)題。C++提供了名稱(chēng)空間工具,以更好的控制名稱(chēng)的作用域,本文就來(lái)談?wù)凜++ 名稱(chēng)空間,需要的朋友可以參考一下
    2021-09-09
  • C++實(shí)現(xiàn)字符串類(lèi)型相互轉(zhuǎn)換的代碼示例

    C++實(shí)現(xiàn)字符串類(lèi)型相互轉(zhuǎn)換的代碼示例

    在C/C++編程中,字符串是非?;A(chǔ)且常用的數(shù)據(jù)類(lèi)型,但是由于不同的編程語(yǔ)言或標(biāo)準(zhǔn)庫(kù)可能采用不同的字符串類(lèi)型,因此在不同的應(yīng)用場(chǎng)景下可能需要進(jìn)行字符串類(lèi)型的相互轉(zhuǎn)換,本文將介紹如何在C/C++中將char*,std::string,QString,CString/MFC?String相互轉(zhuǎn)換
    2023-06-06
  • C語(yǔ)言實(shí)現(xiàn)選擇排序、冒泡排序和快速排序的代碼示例

    C語(yǔ)言實(shí)現(xiàn)選擇排序、冒泡排序和快速排序的代碼示例

    這篇文章主要介紹了C++中實(shí)現(xiàn)選擇排序、冒泡排序和快速排序的代碼示例,例子帶有執(zhí)行時(shí)間統(tǒng)計(jì)還可以簡(jiǎn)單看一下效率對(duì)比,需要的朋友可以參考下
    2016-04-04
  • VS中的scanf_s函數(shù)和scanf用法及說(shuō)明

    VS中的scanf_s函數(shù)和scanf用法及說(shuō)明

    這篇文章主要介紹了VS中的scanf_s函數(shù)和scanf用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java?C++題解?leetcode第k個(gè)數(shù)實(shí)例

    Java?C++題解?leetcode第k個(gè)數(shù)實(shí)例

    這篇文章主要為大家介紹了Java?C++題解?leetcode第k個(gè)數(shù)實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論