91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中存儲方案和動態分配的示例分析

發布時間:2021-12-31 14:12:24 來源:億速云 閱讀:121 作者:小新 欄目:開發技術

這篇文章主要介紹了C++中存儲方案和動態分配的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

存儲方案和動態分配

在之前的文章當中,我們討論了C++用來為變量分配內存的5種方案,但是這些方案并不適用于使用new運算符分配的內存,這種內存被稱為動態內存。

我們在之前的文章當中也曾介紹過,動態內存由newdelete控制,而不是由作用域和鏈接性規則控制。所以我們可以在一個函數當中分配動態內存,在另外一個函數中釋放。

通常C++編譯器當中有三塊獨立的內存,一塊用于靜態變量,一塊用于自動變量,還有一塊用于動態存儲。

雖然存儲方案的概念不適用于動態內存,但是適用于動態內存的自動和靜態指針。C++ Primer當中有這么一個例子,我們在一個函數當中有如下語句:

float * p_fees = new float[20];

很明顯,我們通過new創建了一個長度為20的float數組,這塊數組的內存將會一直停留在內存當中,直到使用delete語句釋放。但當該函數運行結束的時候,p_fees這個指針將會消失。如果希望在其他地方能夠使用這個數組,需要將地址通過某種方式返回或者傳遞。

如果我們將p_fees的鏈接性聲明為外部的,那么我們在其他地方都可以訪問到了,如果另外的文件當中需要訪問,也同樣可以使用關鍵字extern

初始化

前面講了使用new申請內存的方法,如果我們想要在分配內存的同時完成變量的初始化,應該怎么辦呢?

如果要為內置的標量類型分配空間并初始化,可以在類型名后面加上初始值,并將它用括號括起來:

int *pi = new int(3);
double *pd = new double(99.9);

如果我們要初始化結構體或者是數組,則需要使用大括號的列表初始化,這需要編譯器支持C++11,這是C++11中的新特性:

struct P {
    int x, y;
};

P *p = new P{3, 4};
int *arr = new int[4] {2, 3, 4, 5};

在C++11當中也支持對單值變量使用列表初始化:

double *pd = new double(99.99);

感謝你能夠認真閱讀完這篇文章,希望小編分享的“C++中存儲方案和動態分配的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

永年县| 永平县| 临江市| 潞城市| 遂宁市| 江孜县| 且末县| 财经| 柞水县| 乃东县| 万宁市| 安丘市| 邻水| 寿宁县| 石景山区| 沾益县| 定远县| 竹北市| 牡丹江市| 大化| 娄烦县| 安阳县| 丹巴县| 清水县| 朔州市| 葵青区| 青海省| 玛沁县| 府谷县| 江口县| 石首市| 梨树县| 西和县| 从化市| 东港市| 工布江达县| 和龙市| 前郭尔| 诸城市| 蓬安县| 岢岚县|