最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

規(guī)避方法:

1)指針在定義的時(shí)候,如果沒地方指,就初始化為nullptr。
2)動(dòng)態(tài)分配的內(nèi)存被釋放后,將其置為nullptr。
3)函數(shù)不要返回局部變量的地址。
注意:野指針的危害比空指針要大很多,在程序中,如果訪問野指針,可能會(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)文章

最新評(píng)論

孝昌县| 竹北市| 塔河县| 桐庐县| 通江县| 本溪市| 嘉祥县| 绥中县| 三明市| 竹溪县| 桓仁| 平顶山市| 格尔木市| 盐池县| 梅河口市| 长岛县| 余江县| 连州市| 收藏| 昌平区| 永福县| 肇庆市| 曲阜市| 永川市| 临江市| 和田市| 丹江口市| 南昌县| 维西| 万山特区| 遵化市| 新邵县| 叶城县| 滁州市| 凤山县| 遂昌县| 聂荣县| 乐都县| 那坡县| 宣威市| 盈江县|