www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 芯聞號 > 充電吧
[導讀]字符串常量,我們經(jīng)常用到,但是它到底放在哪個存儲區(qū)呢?是“自動存儲區(qū)”還是“靜態(tài)存儲區(qū)”中?比如:char?*pstr="hello?world!";這里,"hello world!"是一個字符串常量

字符串常量,我們經(jīng)常用到,但是它到底放在哪個存儲區(qū)呢?是“自動存儲區(qū)”還是“靜態(tài)存儲區(qū)”中?

比如:


char?*pstr="hello?world!";

這里,"hello world!"是一個字符串常量,pstr是在棧中的變量。
我想問,字符串常量,在哪個內(nèi)存區(qū)域分配空間呢?

好像應該不是在“棧區(qū)“分配空間吧!



一、預備知識—程序的內(nèi)存分配
一個由C/C++編譯的程序占用的內(nèi)存分為以下幾個部分
1、棧區(qū)(stack)

由編譯器自動分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結構中的棧。
2、堆區(qū)(heap)

一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。注意它與數(shù)據(jù)結構中的堆是兩回事,分配方式倒是類似于鏈表。
3、全局區(qū)(靜態(tài)區(qū))(static)

全局變量和靜態(tài)變量的存儲是放在一塊的,初始化的全局變量和靜態(tài)變量在一塊區(qū)域, 未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域。 程序結束后由系統(tǒng)釋放。
4、文字常量區(qū)?

常量字符串就是放在這里的。 程序結束后由系統(tǒng)釋放
5、程序代碼區(qū)

存放函數(shù)體的二進制代碼。


二、示例程序 ?


int?a?=?0;?全局初始化區(qū)??
char?*p1;?全局未初始化區(qū)??
main()??
{??
	int?b;?棧??
	char?s[]?=?"abc";?棧??
	char?*p2;?棧??
	char?*p3?=?"123456";?123456