當前位置:首頁 » 服務存儲 » string在內存中是如何存儲的
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

string在內存中是如何存儲的

發布時間: 2022-10-03 03:57:57

『壹』 String類型所接收的字元串在哪進行存儲

String類型表示字元串可以分為兩種方式:

  • 直接使用字元串變數接收一個字元串常量;這個字元串常量是在常量池中存儲的;

  • 使用new關鍵字創建字元串對象,則在堆中存儲。

『貳』 C++中string類型變數存儲字元串的方法

一般的實現是類似於這個樣子.
char*
ptr;
//
內存指針,
用來保存字元串
size_t
cap;
//
動態內存的長度
size_t
len;
//
字元串的長度
實際的實現會更加復雜,
而且是模板.
賦值的時候
先檢查
ptr是不是
null,
如果是的話分配足夠的動態內存.
如果ptr不是null,
那麼檢查cap是否足夠放下字元串,
如果不足的話重新分配內存.
然後調用std::或者strcpy之類的函數,
把字元串復制到ptr中.
(1)它是通過動態分配內存給_Ptr來存儲字元串,還是通過其他的什麼方式來存儲字元串的?
動態內存.

『叄』 java中一個String常量和一個new 出來的String對象追加的時候,在內存中是怎麼存儲的

String a = "women"; "women"表示String類的對象,是堆內存里的,把"women"地址值賦給了a
String b = "wo"+"men"; java 程序中有常量優化機制,最後"women"地址值給了b;
String c = "wo"+new String ("men");表示兩個地址值不一樣的對象相加,其實底層是用StringBuffer的append()方法操作的;會創建新的對象;以前的變成了垃圾,結果為「women」;

『肆』 字元串在內存中怎麼儲存

    字元串是以ASCII字元NUL結尾的字元序列。
ASCII字元NUL表示為\0.字元串通常存儲在數組或者從堆上分配的內存中。只是,並不是全部的字元數組都是字元串,字元數組可能沒有NUL字元。
字元數組也用來表示布爾值等小的整數單元,以節省內存空間。

    C中有兩種類型的字元串:
     單位元組字元串
     由char數據類型組成的序列
     寬字元串
     由wchar_t數據類型組成的序列
     wchar_t數據類型用來表示寬字元,要麼是16位寬。要麼是32位寬。這兩種字元串都以NUL結尾。能夠在string.h中找到單位元組字元串函數。而在wchar.h中找到寬字元串函數。寬字元主要用於非拉丁字元集,對於支持外語的應用程序非常實用,
     字元串的長度是字元串中除了NUL字元外的字元數。為字元串分配內存的時候,要記住為全部的字元加上NUL字元分配足夠的空間。

『伍』 String類型表示的字元串在哪存儲

String name = "手機";
則"手機"這個字元串在常量池裡
name這個變數在棧里

『陸』 java中的String常量是存放在棧中還是堆中

string 字元串是經過final修飾的,在源碼中就可以看到,所以string str= 「123」聲明的變數str是在棧區存放的,但聲明變數的值『123』是在常量池中存放的,如果是經過 new
String str = new String(123);這樣的,變數名str是在堆區存放的,但『123』還是在常量池中存在,在常量池中存放時會先看常量池中有沒有這個『123』值,有的話就把這個值的地址值賦給堆區中的str,沒有就新建一個;