欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++ 內(nèi)存分區(qū)模型的使用(代碼區(qū)、全局區(qū)、棧區(qū)、堆區(qū)、new)

 更新時間:2021年04月25日 11:23:51   作者:小猿筆記  
這篇文章主要介紹了C++ 內(nèi)存分區(qū)模型的使用(代碼區(qū)、全局區(qū)、棧區(qū)、堆區(qū)、new),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

內(nèi)存分區(qū)模型

在這里插入圖片描述

1 代碼區(qū)

在這里插入圖片描述

在這里插入圖片描述

2 全局區(qū)

// 全局變量、靜態(tài)變量、常量

在這里插入圖片描述

#include <iostream>
using namespace std;

// 全局變量、靜態(tài)變量、常量

//全局變量
int g_a=10;
int g_b=10;

//const修飾的全局常量
const int c_g_a = 10;
const int c_g_b = 10;

int main()
{
	//創(chuàng)建普通局部變量
	int a = 10;
	int b = 10;
	cout << "局部變量a的地址為:" << (int)&a << endl;//&a取地址,(int)強(qiáng)制轉(zhuǎn)換為10進(jìn)制
	cout << "局部變量b的地址為:" << (int)&b <<endl<<endl;

	//全局變量
	cout << "全局變量g_a的地址為:" << (int)&g_a << endl;
	cout << "全局變量g_b的地址為:" << (int)&g_b << endl<<endl;

	//靜態(tài)變量
	static int s_a = 10;
	static int s_b = 10;
	cout << "靜態(tài)變量s_a的地址為:" << (int)&s_a << endl;
	cout << "靜態(tài)變量s_b的地址為:" << (int)&s_b << endl << endl;

	//常量(字符串常量、const修飾的變量)
	//字符串常量
	cout << "字符串常量的地址為:" << (int)&"hello word" << endl;
	
	//const修飾的變量(全局常量、局部常量)
	//const修飾的全局變量
	cout << "全局常量 c_g_a的地址為:" << (int)&c_g_a << endl;
	cout << "全局常量 c_g_b的地址為:" << (int)&c_g_b << endl;

	//const修飾的局部變量
	const int c_a = 10;
	const int c_b = 10;
	cout << "局部常量 c_a的地址為:" << (int)&c_a << endl;
	cout << "局部常量 c_b的地址為:" << (int)&c_b << endl << endl;

	system("pause");
	return 0;
}

在這里插入圖片描述

在這里插入圖片描述

總結(jié)

在這里插入圖片描述

3 棧區(qū)

在這里插入圖片描述

棧區(qū)注意事項

  • 不要返回局部變量的地址
  • 棧區(qū)的數(shù)據(jù)由編譯器管理開辟和釋放
#include <iostream>
using namespace std;

//棧區(qū)注意事項
//不要返回局部變量的地址
//棧區(qū)的數(shù)據(jù)由編譯器管理開辟和釋放

int *func(int b)//形參數(shù)據(jù)也存放在棧區(qū)
{
	b = 100;
	int a = 10;//局部變量:存放在棧區(qū),棧區(qū)的數(shù)據(jù)在函數(shù)執(zhí)行完畢自動釋放
	return &a;//返回局部變量的地址
}
int main()
{
	//接受func函數(shù)的返回值
	int *p=func(1);
	cout << *p << endl;//第一次可以打印正確的數(shù)字,因為編譯做了一次保留
	cout << *p << endl;//第二次,就沒了,輸出亂碼

	system("pause");
	return 0;
}

在這里插入圖片描述

4 堆區(qū)

在這里插入圖片描述

在這里插入圖片描述

#include <iostream>
using namespace std;
int *func()
{
	//利用new關(guān)鍵字,將數(shù)據(jù)開辟到堆區(qū)
	//指針本質(zhì)也是局部變量,存放在棧上,指針保存的數(shù)據(jù)存放咋堆區(qū)
	int* p = new int(10);
	return p;
}
int main()
{
	//在堆區(qū)開辟數(shù)據(jù)
	int* q = func();
	cout << *q << endl;//與上一個程序?qū)Ρ?,多輸出幾?
	cout << *q << endl;
	cout << *q << endl; 
	cout << *q << endl;

	system("pause");
	return 0;
}

在這里插入圖片描述

5 new運算符

在這里插入圖片描述

#include <iostream>
using namespace std;

//1.new的基本語法
int* func()
{
	//在堆區(qū)創(chuàng)建整形數(shù)據(jù)
	//new返回的是數(shù)據(jù)類型指針
	int* p = new int(10);
	return p;
}
//2.在堆區(qū)利用new 開辟數(shù)組
int main()
{
	//在堆區(qū)開辟數(shù)據(jù)
	int* q = func();
	cout << *q << endl;//與上一個程序?qū)Ρ龋噍敵鰩状?
	cout << *q << endl;
	cout << *q << endl;

	//堆區(qū)數(shù)據(jù)是由程序員管理開辟、管理釋放
	//如果想釋放堆區(qū)數(shù)據(jù),利用關(guān)鍵字delete
	delete q;
	cout << *q << endl;//內(nèi)存已被釋放,再次訪問就是非法操作,報錯

	system("pause");
	return 0;
}

在這里插入圖片描述

在這里插入圖片描述

#include <iostream>
using namespace std;

//1.new的基本語法


//2.在堆區(qū)利用new 開辟數(shù)組
void test()
{
	//創(chuàng)建10整形數(shù)據(jù)的數(shù)組,在堆區(qū)
	int *arr =new int[10];//10代表數(shù)組有10個元素

	for (int i = 0; i < 10; i++)
	{
		arr[i] = i + 100;//給10個元素賦值,100~109
	}
	for (int i = 0; i < 10; i++)
		cout << arr[i] << endl;

	//釋放堆取數(shù)組
	//釋放數(shù)組的時候,要加[]才可以,否則認(rèn)為是只是放一個元素
	delete[] arr;
}
int main()
{
	test();
	system("pause");
	return 0;
}

在這里插入圖片描述

注意:

  • 釋放堆取數(shù)組
  • 釋放數(shù)組的時候,要加[]才可以,否則認(rèn)為是只是放一個元素

參考:

嗶哩嗶哩 黑馬程序員

到此這篇關(guān)于C++ 內(nèi)存分區(qū)模型的使用(代碼區(qū)、全局區(qū)、棧區(qū)、堆區(qū)、new)的文章就介紹到這了,更多相關(guān)C++ 內(nèi)存分區(qū)模型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言之free函數(shù)以及野指針介紹

    C語言之free函數(shù)以及野指針介紹

    以下是對C語言中的free函數(shù)與野指針進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下
    2013-07-07
  • c++顯式棧實現(xiàn)遞歸介紹

    c++顯式棧實現(xiàn)遞歸介紹

    大家好,本篇文章主要講的是c++顯式棧實現(xiàn)遞歸介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • C++?setw()函數(shù)的具體使用

    C++?setw()函數(shù)的具體使用

    本文主要介紹了C++?setw()函數(shù)的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • c語言中main函數(shù)用法及知識點總結(jié)

    c語言中main函數(shù)用法及知識點總結(jié)

    在本篇文章里小編給大家分享的是一篇關(guān)于c語言中main函數(shù)用法及知識點總結(jié)內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)參考下。
    2021-10-10
  • 基于對話框程序中讓對話框捕獲WM_KEYDOWN消息的實現(xiàn)方法

    基于對話框程序中讓對話框捕獲WM_KEYDOWN消息的實現(xiàn)方法

    下面我們將通過程序給大家演示基于對話框的應(yīng)用程序?qū)M_KEYDOWN消息的捕獲。需要的朋友可以參考下
    2013-05-05
  • C語言實現(xiàn)順序表的插入刪除

    C語言實現(xiàn)順序表的插入刪除

    這篇文章主要介紹了C語言實現(xiàn)順序表的插入刪除,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 使用代碼驗證linux子進(jìn)程與父進(jìn)程的關(guān)系

    使用代碼驗證linux子進(jìn)程與父進(jìn)程的關(guān)系

    Linux下父進(jìn)程可以使用fork 函數(shù)創(chuàng)建子進(jìn)程,但是當(dāng)父進(jìn)程先退出后,子進(jìn)程會不會也退出呢?通過下面這個小實驗,我們能夠很好的看出來
    2014-02-02
  • C++ 實現(xiàn)靜態(tài)單鏈表的實例

    C++ 實現(xiàn)靜態(tài)單鏈表的實例

    這篇文章主要介紹了C++ 實現(xiàn)靜態(tài)單鏈表的實例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Qt QChart 創(chuàng)建圖表的實現(xiàn)方法

    Qt QChart 創(chuàng)建圖表的實現(xiàn)方法

    這篇文章主要介紹了Qt QChart 創(chuàng)建圖表的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C++?QT實現(xiàn)文件壓縮和解壓縮操作

    C++?QT實現(xiàn)文件壓縮和解壓縮操作

    這篇文章主要為大家詳細(xì)介紹了C++?QT如何實現(xiàn)壓縮文件、文件夾和解壓縮的操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2022-11-11

最新評論