亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

C語(yǔ)言

c語(yǔ)言stack(棧)和heap(堆)的使用

時(shí)間:2024-10-16 03:28:29 C語(yǔ)言 我要投稿
  • 相關(guān)推薦

c語(yǔ)言stack(棧)和heap(堆)的使用

  在計(jì)算機(jī)領(lǐng)域,堆棧是一個(gè)不容忽視的概念,我們編寫(xiě)的C語(yǔ)言程序基本上都要用到。本文主要介紹了c語(yǔ)言stack(棧)和heap(堆)的使用詳解,供參考學(xué)習(xí),感興趣的小伙伴們可以參考一下!想了解更多相關(guān)信息請(qǐng)持續(xù)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!

  一、預(yù)備知識(shí)—程序的內(nèi)存分配

  一個(gè)由C/C++編譯的程序占用的內(nèi)存分為以下幾個(gè)部分

  1、棧區(qū)(stack)—由編譯器自動(dòng)分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類(lèi)似于數(shù)據(jù)結(jié)構(gòu)中的棧。

  2、堆區(qū)(heap)—一般由程序員分配釋放,若程序員不釋放,程序結(jié)束時(shí)可能由OS回收。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類(lèi)似于鏈表。

  3、全局區(qū)(靜態(tài)區(qū))(static)—全局變量和靜態(tài)變量的存儲(chǔ)是放在一塊的,初始化的全局變量和靜態(tài)變量在一塊區(qū)域,未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域。程序結(jié)束后由系統(tǒng)釋放。

  4、文字常量區(qū)—常量字符串就是放在這里的。程序結(jié)束后由系統(tǒng)釋放。

  5、程序代碼區(qū)—存放函數(shù)體的二進(jìn)制代碼。

  二、例子程序

  代碼如下:

  //main.cpp

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

  char *p1;  //全局未初始化區(qū)

  main()

  {

  intb;棧

  char s[]="abc";  //棧

  char *p2;     //棧

  char *p3="123456";  //123456