char a new char a abc 會洩漏記憶體嗎?

發布 科技 2024-04-12
14個回答
  1. 匿名使用者2024-02-07

    char *a=new char;a="abc";記憶體會洩露嗎?

    不,因為你正在定義乙個一維陣列,但你錯了。

    char *a="new",char;a="abc";這樣,你就不會犯錯了!

    你使用 char* a=new,你使用 char 然後使用指標,顯然,你正在定義乙個指向字串陣列的指標,正確的表示式是:char *a="new",char;a="abc";

    如果我誤解了第二個表示式,你的意思是說:字串"abc"給字串變數 a 沒有錯,它是正確的表示式,它不會洩漏記憶體!

    一維陣列的下標可以省略,但二維陣列的列下標不能省略,例如char a[10]是正確的,char a[是錯誤的,只有二維陣列會漏記憶體,因為它不能省略列標記。

    char *a=new char;a="abc";上面沒有固定的緩衝區,可以儲存一維陣列行號,所以不管你定義了多少個字串,只要省略了行號,就不會有記憶體洩漏!

  2. 匿名使用者2024-02-06

    是的,在最初分配空間後,請再次修改其值,使原始分配的記憶體失控且無法分配。

    修改動態分配記憶體的指標後,如果需要修改它,請記住先這樣做。

    char* a=new char;delete a;a="abc";

  3. 匿名使用者2024-02-05

    請在新字元時寫下您的申請。

    new char[size],編譯器不會從以後或執行時推斷需要多少記憶體。

    我沒有發現當記憶體大小沒有被寫入時編譯器會發生什麼,看起來它應該報告乙個錯誤,如果可以編譯,我猜它可能是 0 或 1 或某個預設值,簡而言之,請求的記憶體可能無法儲存從 cin 接收的字串。

    即使你沒有填寫你想要應用的記憶體量,它也會正常工作,但 char *a 指向的記憶體段恰好未使用,如果 cin 的字串輸入足夠長,它很可能會報告錯誤。

  4. 匿名使用者2024-02-04

    char a= 這是乙個字元陣列,占用 3 個位元組。 char a="abc"它是不同的,它是一根繩子,最後還有另乙個'\0'終結者,占用 4 個位元組。

  5. 匿名使用者2024-02-03

    字串有乙個結尾 (0),所以 strlen 應該是 4(空格 + a + b + c),但在記憶體中,如果結尾,它應該是 5

  6. 匿名使用者2024-02-02

    字串 char a=“abc”; 記憶體中占用的位元組數為 (b 4)。

  7. 匿名使用者2024-02-01

    換句話說,儲存在變數 s 中的是乙個位址,它是字串“abc”的第乙個位址,即字元'a'位址。

    abc"它是乙個字串常量,它是連續儲存的,編譯系統管理它儲存的儲存空間,其實它後面有乙個0(字串終止符)。

    S+1) 是 B,因為 S 指向 A,S+1 指向 B(即 S+1 是'b'此字元的位址)。*s+1 的值也是 b,因為 *s+1='a'+1,所以是的'b'字元。

  8. 匿名使用者2024-01-31

    首先,有乙個靜態字串“abc”。 然後你把這個指標指向那個字串。

    S+1 確實是 B。 但是你沒有很好地使用這個例子。 如果示例中的字串為“CBA”,則 *s+1 為 d,*(s+1) 為 b。 這樣你就可以更好地理解。

  9. 匿名使用者2024-01-30

    字串末尾應該有乙個'\0'作為字串結束標誌,所以你應該再請求乙個:

    char*temp_name=new char[y+1];

    在 for(){ 迴圈之後,新增 temp name[i]='\0';就是這樣。

  10. 匿名使用者2024-01-29

    僅比較記憶體位址。

    比較字串的正確方法是使用 strcmp(char *s1,char *s2) 函式進行比較,您需要包含

    當 strcmp() 返回 0 時,則 s1 和 s2 相等。

  11. 匿名使用者2024-01-28

    將字元儲存在單引號中,而不是雙引號中。

  12. 匿名使用者2024-01-27

    等同於字元 a[4]="abc"。

    還有乙個重複的、自動新增的字串終止符。

    這是乙個陣列初始化,它自然地分配記憶體,因為它在初始化時使用""引號,因此會自動新增 0。

    char 是 8 位,即 1 個位元組,因此您需要在堆疊上建立乙個包含四個字元的空間。

    但有乙個例外。

    char *const p = "abc";

    字串被分配給字元常量區域。 返回指向 p 的指標。 不會開啟新的堆疊空間。

    之所以要新增 const,是因為他指向乙個靜態常量,不能修改。 當然,您可以更改此 p 指向的位址。

  13. 匿名使用者2024-01-26

    最好測試這樣的問題,下面就是zhic,c++測試dao,不動手就學不了東西。

    #include

    #include

    using namespace std;

    char ss="abc";

    int main()

    結果 4313088 ABC

  14. 匿名使用者2024-01-25

    1.是的,系統初始化為字串"abc“分配的記憶體。

    2.這個“ABC"是陣列 A 的第乙個位址。

相關回答