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

C/C++中棧(stack)&堆(heap)詳解及其作用介紹

 更新時間:2021年09月02日 15:33:34   作者:我是小白呀  
這篇文章主要介紹了C/C++中棧(stack)&堆(heap)詳解及其作用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

概述

棧 (stack) 是為執(zhí)行線程流出的內(nèi)存空間. 堆 (head) 是為動態(tài)分配預留的空間.

在這里插入圖片描述

程序運行中的棧和堆

我們以一段代碼來舉例:

#include <iostream>
using namespace std;

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

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

    return 0;
}

在這里插入圖片描述

  • 棧區(qū): 棧區(qū)是分配局部變量的空間, 處于相對較高的地址. 棧地址向下增長
  • 堆區(qū): 用于分配程序媛申請的內(nèi)存空間, 是向上增長的
  • 靜態(tài)數(shù)據(jù)區(qū): 分配靜態(tài)變量, 全局變量的空間
  • 只讀區(qū): 分配常量和程序代碼

堆和棧的差異

在這里插入圖片描述

申請方式和回收方式

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

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

申請后系統(tǒng)的響應

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

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

申請效率比較

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

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

申請大小的限制

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

堆: 堆的大小受限于計算機系統(tǒng)中有效的虛擬內(nèi)存. 堆獲得的空間比較靈活, 也比較大.

堆和棧中的存儲內(nèi)容

棧: 函數(shù)調(diào)用語句的下一條可執(zhí)行語句的地址, 函數(shù)的各個參數(shù), 函數(shù)中的局部變量.

堆: 具體內(nèi)容由程序媛, 我們安排.

注: 當有指針數(shù)據(jù)成員時, 必須用深復制, 使其使用堆區(qū)的空間.

到此這篇關(guān)于C/C++中棧(stack)&堆(heap)詳解及其作用介紹的文章就介紹到這了,更多相關(guān)C++棧(stack)&堆(heap)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++ 二維數(shù)組傳參的四種方式

    C++ 二維數(shù)組傳參的四種方式

    C++的二維數(shù)組里面,通過用數(shù)組名傳參,傳過去后數(shù)組名會退化成一個一維數(shù)組指針,所以C++的函數(shù)參數(shù)不能像C語言一樣去寫,本文主要介紹了C++ 二維數(shù)組傳參的四種方式,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • C語言的字符函數(shù)和字符串函數(shù)詳解

    C語言的字符函數(shù)和字符串函數(shù)詳解

    這篇文章主要為大家介紹了C語言的字符函數(shù)和字符串函數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • C++左值和右值學習筆記

    C++左值和右值學習筆記

    這篇文章主要為大家介紹了C++左值和右值學習筆記的重點講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • C++中sprintf使用的方法與printf的區(qū)別分析

    C++中sprintf使用的方法與printf的區(qū)別分析

    這篇文章主要介紹了C++中sprintf使用的方法與printf的區(qū)別,實例分析了sprintf與printf的具體用法及相關(guān)注意事項,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • C++實現(xiàn)PyMysql的基本功能實例詳解

    C++實現(xiàn)PyMysql的基本功能實例詳解

    這篇文章主要介紹了C++實現(xiàn)PyMysql的基本功能,本文通過實例代碼給大家介紹的非常詳細,對大家的工作或?qū)W習有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • C語言時間函數(shù)之mktime和difftime詳解

    C語言時間函數(shù)之mktime和difftime詳解

    這篇文章主要為大家詳細介紹了C語言時間函數(shù)之mktime和difftime,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一,希望能夠給你帶來幫助
    2022-02-02
  • C和C++中argc和argv的含義及用法詳解

    C和C++中argc和argv的含義及用法詳解

    argv 是 argument vector的縮寫,表示傳入main函數(shù)的參數(shù)序列或指針,這篇文章主要介紹了C和C++中argc和argv的含義以及用法,需要的朋友可以參考下
    2022-11-11
  • C語言中函數(shù)指針的三種使用方法總結(jié)

    C語言中函數(shù)指針的三種使用方法總結(jié)

    這篇文章主要介紹了 C語言中函數(shù)指針的三種使用方法總結(jié)的相關(guān)資料,希望通過本文大家能夠徹底掌握指針的使用方法,需要的朋友可以參考下
    2017-10-10
  • 在Qt中使用OpenGL繪制三角形指南

    在Qt中使用OpenGL繪制三角形指南

    在高性能渲染場景中,CPU資源常被過度消耗,導致界面卡頓,而OpenGL作為業(yè)界標準的圖形API,能通過GPU硬件加速顯著降低CPU負載,本文將以繪制三角形為例,教你如何通過Qt的QOpenGLWidget和QOpenGLFunctions實現(xiàn)跨平臺GPU渲染,感興趣的朋友一起看看吧
    2025-04-04
  • 在c和c++中實現(xiàn)函數(shù)回調(diào)

    在c和c++中實現(xiàn)函數(shù)回調(diào)

    如何在c和c++中實現(xiàn)函數(shù)回調(diào)呢?現(xiàn)在小編就和大家分享一下在c/c++中實現(xiàn)函數(shù)回調(diào)的示例代碼,需要的朋友可以參考下
    2013-07-07

最新評論

北川| 汽车| 亚东县| 吉水县| 榆林市| 延寿县| 枣庄市| 噶尔县| 赤城县| 安乡县| 余庆县| 永靖县| 柳江县| 紫阳县| 麟游县| 浪卡子县| 林甸县| 中西区| 杭锦后旗| 前郭尔| 光山县| 肇源县| 独山县| 广平县| 衢州市| 鄄城县| 奉节县| 马龙县| 毕节市| 汕头市| 名山县| 仁怀市| 公安县| 孝感市| 平南县| 贞丰县| 花垣县| 磴口县| 富宁县| 温州市| 大厂|