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

溫馨提示×

溫馨提示×

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

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

C/C++中棧stack和堆heap有什么用

發布時間:2021-09-05 10:53:20 來源:億速云 閱讀:235 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“C/C++中棧stack和堆heap有什么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“C/C++中棧stack和堆heap有什么用”這篇文章吧。

概述

棧 (stack) 是為執行線程流出的內存空間. 堆 (head) 是為動態分配預留的空間.

C/C++中棧stack和堆heap有什么用

程序運行中的棧和堆

我們以一段代碼來舉例:

#include <iostream>
using namespace std;

int a = 0;  // 全局初始化區
char *pt;  // 全局未初始化

int main() {
    int b; // b在棧區
    char s[] = "abc";  // s在棧區
    char *p1;  // 在棧區
    char *p2 = "123";  // "123"在常量區, p3在棧區
    static int c = 0;  // 全局靜態初始化區
    char *p3 = new char(65);  // 在堆區
    char *p4 = new char[10];  // 在堆區

    return 0;
}

C/C++中棧stack和堆heap有什么用

  • 棧區: 棧區是分配局部變量的空間, 處于相對較高的地址. 棧地址向下增長

  • 堆區: 用于分配程序媛申請的內存空間, 是向上增長的

  • 靜態數據區: 分配靜態變量, 全局變量的空間

  • 只讀區: 分配常量和程序代碼

堆和棧的差異

C/C++中棧stack和堆heap有什么用

申請方式和回收方式

棧: 棧上的空間是自動分配回收的. 生存周期只在函數的運行過程中, 運行后就釋放.

堆: 程序媛根據需要自己申請的空間, 只要程序媛不釋放空間, 就一直可以訪問到. 一旦忘記釋放會造成內存泄漏.

申請后系統的響應

棧: 只要棧的剩余空間大于所申請空間, 系統將為程序提供內存, 否則將報異常提示棧溢出. 響應速度快.

堆: 系統收到程序的申請時, 會遍歷空閑內存地址的鏈表. 尋找第一個空間大于所申請空間的堆節點. 響應速度慢.

申請效率比較

棧: 由系統自動分配, 速度較快, 程序媛無法控制.

堆: 由 new 分配, 一般速度較慢, 而且容易產生內存碎片, 不過用起來最方便.

申請大小的限制

棧: 在 Windows 下, 棧的大小是 2MB. 如果申請的空間超過棧的剩余空間時, 將提示overflow
(棧溢出).

堆: 堆的大小受限于計算機系統中有效的虛擬內存. 堆獲得的空間比較靈活, 也比較大.

堆和棧中的存儲內容

棧: 函數調用語句的下一條可執行語句的地址, 函數的各個參數, 函數中的局部變量.

堆: 具體內容由程序媛, 我們安排.

注: 當有指針數據成員時, 必須用深復制, 使其使用堆區的空間.

以上是“C/C++中棧stack和堆heap有什么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

晋江市| 中西区| 华池县| 贵溪市| 若尔盖县| 宣威市| 芒康县| 茶陵县| 基隆市| 阿拉善盟| 伊宁市| 阳原县| 察隅县| 大新县| 乌拉特后旗| 通道| 百色市| 南通市| 普兰店市| 崇文区| 南充市| 吉林市| 赣州市| 平塘县| 东丰县| 佳木斯市| 理塘县| 阿合奇县| 微博| 廊坊市| 涡阳县| 绥芬河市| 铜川市| 阳信县| 绵阳市| 惠州市| 灌阳县| 施秉县| 禄丰县| 汝城县| 鄂托克旗|