第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c+中的字符串是在靜態(tài)內存中創(chuàng)建的嗎?

c+中的字符串是在靜態(tài)內存中創(chuàng)建的嗎?

C++
Qyouu 2019-10-12 16:07:08
c+中的字符串是在靜態(tài)內存中創(chuàng)建的嗎?c+中的字符串是在靜態(tài)內存中創(chuàng)建的,并且只有在程序退出時才被銷毀嗎?
查看完整描述

3 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

創(chuàng)建它的地方是編譯器編寫器的實現(xiàn)決定,真的。最有可能的是,字符串文本將存儲在內存的只讀段中,因為它們從不更改。


在過去的編譯器時代,您曾經擁有像這些文字一樣的靜態(tài)數(shù)據,以及全局但可變的數(shù)據。這些數(shù)據存儲在文本(代碼)段和數(shù)據(初始化數(shù)據)段中。


即使你有這樣的代碼char *x = "hello";,hello字符串本身存儲在只讀內存中,而變量則存儲在只讀內存中。x在堆棧上(如果是全局的,則在可寫內存中的其他地方)。x只需設置為hello繩子。這允許各種棘手的事情,如字符串折疊,以便“無效選項”(0x1000)和“有效選項”(0x1002)可以使用相同的內存塊,如下所示:


+-> plus:0   1   2   3   4   5   6   7   8   9   A   B   C   D   E

|      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+----+

0x1000 | i | n | v | a | l | i | d |   | o | p | t | i | o | n | \0 |

       +---+---+---+---+---+---+---+---+---+---+---+---+---+---+----+

記住,我并不是指只讀存儲器,而是專用于存儲不可更改的東西的內存(操作系統(tǒng)可能會將其標記為只讀)。


它們也從未被摧毀,直到main()出口。



查看完整回答
反對 回復 2019-10-13
?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

是的,字符串文本在整個程序期間都是有效的,即使在銷毀靜態(tài)對象的過程中也是如此。

2.13.4/1在“標準”中說

一個普通的字符串文字具有類型為“數(shù)組的n個字符”和靜態(tài)存儲時間。

該標準在3.7.1/1中提到“靜態(tài)存儲持續(xù)時間”:

這些對象的存儲應在程序期間持續(xù)。



查看完整回答
反對 回復 2019-10-13
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

好吧.。是。它們是必須的;組成每個字符串中的字符序列的信息必須在某個地方。如果要動態(tài)分配它們,然后進行初始化,用于初始化的信息將駐留在哪里?因此,簡單地使字符串保持靜態(tài)是更有效的,這樣一旦程序完成加載,它們就始終是可用的和有效的。

查看完整回答
反對 回復 2019-10-13
  • 3 回答
  • 0 關注
  • 332 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號