C++内存相关问题

1、使用引用时,引用的底层也是用指针实现的,地址和原参数相同

·        引用做函数参数:可以减小复制的开销,提升效率

        引用一般是传入传出参数,可能会被修改,注意使用const 限制参数

        引用如果作为函数的返回值,返回值的生命周期一定大于函数

例: void fun(const int & refer)

struct Mystruct
{
    long original;
    long & refer;
};

void test()
{
    cout << "sizeof(Mystruct)" << sizeof(Mystruct)<< endl;
    //此处输出结果为16,因为struct  结构中有两个参数,各占8个字节(指针大小也是八个字节)
    
}

2、c++内存布局

  进程一般访问的事虚拟地址空间,其中内核态占1G,用户态占用3G

        1、代码中数据在内存中的位置

  其中需要主要以的点 ,char*类型的字符串所在位置。使用const修饰的数据,一般存在于文字常量区,不能进行修改(point to const)。一般的  全局变量/static 修饰 的数据,其生命周期大于函数,存在与全局/静态区。指针一般在栈区上。

//此语句字符串在文字常量区,且文字常量的不能进行修改
char * pstr = "hello nidaye";  
//不能修改*P的值,防止被修改可以在char 前加上const (point 同const)

//而下方语句  数组  则处于 栈区
char pstr[] = "hello world";


///后续有时间继续补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值