标签:12 const string int 5th 对象 chap new delete
•对象的生存期
内存类型 | 定义 | 分配和销毁时机 |
---|---|---|
全局对象 | 程序启动时分配,程序结束时销毁 | |
静态内存 | 局部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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。