美文网首页
c++ string类的字符在内存的储存位置

c++ string类的字符在内存的储存位置

作者: pureer | 来源:发表于2018-11-29 11:20 被阅读0次

以下数据均在ubuntu 64位系统,g++ c++11情况下测试

1. 数据<=16字节,在当前栈区

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
    string temp = "123456789012345";    //注意长度
    int *a = (int *)malloc(sizeof(int));
    int b = 0;
    for(auto &c:temp)
    {
        printf("c%p\n", &c);
    }
    printf("a%p\n", a);
    printf("b%p\n", &b);
}
/*
c0x7ffdb1c5b060     //地址与&b相近,位于栈区
c0x7ffdb1c5b061
c0x7ffdb1c5b062
c0x7ffdb1c5b063
c0x7ffdb1c5b064
c0x7ffdb1c5b065
c0x7ffdb1c5b066
c0x7ffdb1c5b067
c0x7ffdb1c5b068
c0x7ffdb1c5b069
c0x7ffdb1c5b06a
c0x7ffdb1c5b06b
c0x7ffdb1c5b06c
c0x7ffdb1c5b06d
c0x7ffdb1c5b06e
a0x12c3c20
b0x7ffdb1c5b01c
*/

2. 数据>16字节,在堆区

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
    string temp = "1234567890123456";    //注意长度
    int *a = (int *)malloc(sizeof(int));
    int b = 0;
    for(auto &c:temp)
    {
        printf("c%p\n", &c);
    }
    printf("a%p\n", a);
    printf("b%p\n", &b);
}
/*
c0xe86c20       //地址与a相近,位于堆区
c0xe86c21
c0xe86c22
c0xe86c23
c0xe86c24
c0xe86c25
c0xe86c26
c0xe86c27
c0xe86c28
c0xe86c29
c0xe86c2a
c0xe86c2b
c0xe86c2c
c0xe86c2d
c0xe86c2e
c0xe86c2f
a0xe86c40
b0x7ffe59e72fcc
*/

相关文章

  • c++ string类的字符在内存的储存位置

    以下数据均在ubuntu 64位系统,g++ c++11情况下测试 1. 数据<=16字节,在当前栈区 2. 数据...

  • c++中的字符串string和C语言中的字符char

    c++中的字符串string 在c++中使用string类,必须在程序中包含头文件string #include ...

  • Java中String和stringBuffer之间的区别

    String 特点 String每次在改变的时候其实在内存当中的实现方式是新建一片内存来储存新的字符串然后把内存地...

  • 字符串

    C++提供了两种字符串的表示形式: C风格字符 C++引入的string类型 C风格 函数 C++中的String类

  • C/C++语言基础

    语言基础 字符串类-string 常量与变量 运算符 程序和语句 字符串类-string (属于类类型)(c++中...

  • Java基础学习之——核心类String

    前言 无论在C++还是java中,字符串的使用频率都很高,在C++中,字符串封装为一个string类,需要#inc...

  • c++ std::string能否存储二进制字符以及'\

    c++的字符串类std::string能否存储二进制字符以及字符'\0'? 要解决这个问题,我们首先要了解c++的...

  • C++ 字符串

    C++ 提供了以下两种类型的字符串表示形式: C 风格字符串 C++ 引入的 string 类类型 1、C 风格字...

  • String和StringBuffer深度分析

    JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数...

  • QString

    与C++的string以及MFC中的CString类似的,在QT5中使用的字符串类。 QString类的构造:可以...

网友评论

      本文标题:c++ string类的字符在内存的储存位置

      本文链接:https://www.haomeiwen.com/subject/bnvxcqtx.html