C++定义指针内存区域分布

  • 1、定义不同指针类型,使用new方法,分别赋初值和动态分配内存
	char* p1 = new char();//动态分配内存
	int* p2 = new int(2);//变量赋初值
	char* p3 = new char[5];
	char* p4 = new char[5] {1, 2, 3, 4, 5};

A、 动态分配内存,存储在堆的内存区域
在函数内,用New申请的动态内存,在函数退出后仍然有效,直到被专用语句删除后,才会被释放掉;

```cpp
delete p1;
delete []p4;

注意:使用malloc函数分配的内存,则不能用delete进行释放;

如果使用过多new而不释放,会导致尺寸存储,导致内存泄漏;

B、定义好的变量,存储在栈的内存区域
在函数中,定义的变量会在函数调用时候被放入栈区中
在函数退出时候被自动释放删除掉

2、const修饰指针和修饰引用;
A:修饰引用

int a = 22;
int& b = a;//设置b为a的引用,可修改

const int&b = a;//设置b为a的静态引用,只可以进行读,不可通过b修改a
//例如,可使用静态引用进行函数传参,在函数内不允许变量修改

void function(std::<vector>const int&b)
{
}

B:修饰指针

int a = 13;
const int *p3 =&a;*
const int *p3 = (const int)&a;//不能修改指针所指向的值

//常量类型变量,只能用常量指针定义
const int a = 13;
const int *p3 = &a;
int *p3 = &a;//错误写法;

int a[] = {13,12,11,10};
int *const p =a;

p[0] = 100;
*p = 101;

C:智能指针(共享指针)
可以自动管理动态分配的内存
不使用时,自动释放分配的内存

#include<memory>

shared_ptr<int> pInt(new int(2));
cout<<*pInt;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值