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

淺析c語言中的內(nèi)存

 更新時間:2017年09月24日 09:13:56   作者:菜頭大大  
在c++中,內(nèi)存分為5個區(qū),分別是棧區(qū),堆區(qū),自由存儲區(qū),全局/靜態(tài)存儲區(qū)和常量存儲區(qū).

1、棧(stack):存局部變量、函數(shù),調(diào)用函數(shù)時會開辟棧區(qū),函數(shù)結(jié)束時就自動回收,遵循后進(jìn)先出的原則,從高地址向低地址增長。

2、堆(heap):malloc、realloc、calloc等開辟的內(nèi)存就在堆,從低地址向高地址增長,由程序員分配和釋放,系統(tǒng)不自動回收,所以一定要記得申請了就要釋放,以免溢出。

3、數(shù)據(jù)段(初始化數(shù)據(jù)段)(data):存放初始化的全局變量、static修飾的已初始化的變量。

4、未初始化數(shù)據(jù)段(bss段):存放未初始化的全局變量和static修飾的未初始化的變量。

5、正文段(text段):通常是指用來存放程序執(zhí)行代碼的一塊內(nèi)存區(qū)域。這部分區(qū)域的大小在程序運(yùn)行之前就已經(jīng)確定,并且內(nèi)存區(qū)域通常屬于只讀,某些架構(gòu)也允許代碼段為可寫,即允許修改程序。在代碼段中,也有可能包含一些只讀的常數(shù)變量,例如字符串常量等。程序段為程序代碼在內(nèi)存中的映射,一個程序可以在內(nèi)存中有多個副本。

詳細(xì)圖解如下:

例子:

#include<stdio.h>
#include<stdlib.h>
int global1 = 30;  //.data 存在數(shù)據(jù)段
int gloabal2;    //.bass 存在未初始化數(shù)據(jù)段

int main(int argc,char *argv[])  //.text 正文段
{
  int a = 100;  //stack 存在棧
  int *p = malloc(20);  //heap 存在堆
  static int b = 20;  //.data 存在數(shù)據(jù)段,只會初始化一次
  static int c;  //.bss 存在未初始化數(shù)據(jù)段
 
  printf("hello");//存在標(biāo)準(zhǔn)IO的緩沖區(qū)
  return 0;
}

6、堆內(nèi)存的管理

include<stdio.h>

int main(int argc,char *argv[])
{
    //分配內(nèi)存
    char *p = malloc(100); //為指針p分配100的空間
    bzero(p,100); //清空
    int *k = calloc(25,sizeof(int));  //分配一個數(shù)組,數(shù)組里面有25個int型的個元素,自動清空
    p = realloc(p,200); //改變p原來空間的大小,把100改到200
   
    //釋放內(nèi)存
    free(p);
    free(k);
}

相關(guān)文章

  • 深入解析C++中的函數(shù)模板和函數(shù)的默認(rèn)參數(shù)

    深入解析C++中的函數(shù)模板和函數(shù)的默認(rèn)參數(shù)

    這篇文章主要介紹了深入解析C++中的函數(shù)模板和函數(shù)的默認(rèn)參數(shù),是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09
  • 詳解C++中mutable的用法

    詳解C++中mutable的用法

    這篇文章主要介紹了詳解C++中mutable的用法,幫助大家更好的理解和學(xué)習(xí)C++,感興趣的朋友可以了解下
    2020-08-08
  • C語言圍圈報數(shù)題目代碼實現(xiàn)

    C語言圍圈報數(shù)題目代碼實現(xiàn)

    大家好,本篇文章主要講的是C語言圍圈報數(shù)題目代碼實現(xiàn),感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • 淺談c++中“::”和“:” 冒號的意思

    淺談c++中“::”和“:” 冒號的意思

    這篇文章主要介紹了淺談c++中“::”和“:” 冒號的意思,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 貪心算法的C語言實現(xiàn)與運(yùn)用詳解

    貪心算法的C語言實現(xiàn)與運(yùn)用詳解

    這篇文章主要介紹了貪心算法的C語言實現(xiàn)與運(yùn)用詳解,運(yùn)用么,就是文中所附的ACM練習(xí)題,哈哈:D需要的朋友可以參考下
    2015-08-08
  • C++之&與*符號用法案例詳解

    C++之&與*符號用法案例詳解

    這篇文章主要介紹了C++之&與*符號用法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • 如何用C++制作LeetCode刷題小技巧-錯題記錄本

    如何用C++制作LeetCode刷題小技巧-錯題記錄本

    這篇文章主要介紹了如何用C++制作LeetCode刷題小技巧-錯題記錄本的方法,需要的朋友可以參考下
    2021-04-04
  • C++面試八股文之智能指針詳解

    C++面試八股文之智能指針詳解

    智能指針是C++11引入的類模板,用于管理資源,行為類似于指針,但不需要手動申請、釋放資源,本文主要為大家介紹了它的相關(guān)知識,需要的可以參考一下
    2023-06-06
  • 老生常談C語言動態(tài)函數(shù)庫的制作和使用(推薦)

    老生常談C語言動態(tài)函數(shù)庫的制作和使用(推薦)

    下面小編就為大家?guī)硪黄仙U凜語言動態(tài)函數(shù)庫的制作和使用(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • C++ LeetCode1945題解字符串轉(zhuǎn)化后的各位數(shù)字之和

    C++ LeetCode1945題解字符串轉(zhuǎn)化后的各位數(shù)字之和

    這篇文章主要為大家介紹了C++ LeetCode1945題解字符串轉(zhuǎn)化后的各位數(shù)字之和示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12

最新評論