C++ Primer 5th笔记(chap 12)动态内存前瞻
作者:互联网
•对象的生存期
内存类型 | 定义 | 分配和销毁时机 |
---|---|---|
全局对象 | 程序启动时分配,程序结束时销毁 | |
静态内存 | 局部static对象类static数据成员 | 第一次使用时分配,程序结束时销毁 |
栈内存 | 定义在函数内的非static对象局部自动对象 | 进入块时分配,离开块时销毁 |
动态内存 | 定义在任何函数之外的变量 | 程序用堆来存储动态分配的对象显式创建,显式销毁 |
1. new 创建内存对象, delete删除内存对象
//直接初始化方式来初始化一个动态分配的对象
int *pi = new int(2104);
string *ps = new string(10, '9');
vector<int> *pv = new vector<int>{0,1,2,3,4,5,6};
//值初始化,在类型名后加一对空括号即可
string *ps1 = new string;
string *ps2 = new string();
int *pi1 = new int;
int *pi2 = new int();
2. 动态分配的const对象
const int *pci = new const int(1024);
const string *pcs = new const string;//返回一个指向const的指针
3. delete风险
dangling pointer: 被delete后的指针
//这种保护也是有限的, p虽然是空了,但是q还是在的。delete之后得重置指针值为null
int *p(new int(42));
auto q = p;
delete p;
p = nullptr
标签:12,const,string,int,5th,对象,chap,new,delete 来源: https://blog.csdn.net/thefist11cc/article/details/113799198