c++中堆栈及创建对象示例代码
2019/7/10 22:53:18
本文主要是介绍c++中堆栈及创建对象示例代码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
简介
栈(stack),先进后出,位于一级缓存中,操作系统自动分配释放 ,存放函数的参数值,局部变量的值等,被调用时处于存储空间中,调用完毕立即释放。
堆(heap),堆包含一个链表来维护已用和空闲的不连续的内存块,存放在二级缓存中,一般由程序员分配释放。
快速记忆方式:
一级缓存比二级缓存快,栈是一个先进后出列表,存取非常快,所以栈是在一级缓存中。
栈中不能随机取数据,只能取最上面的一个,存放的内容必然要有严格的存取顺序,所以适合函数调用时的形参、局部变量。
栈空间有限,一般PC一级缓存就几M,所以其中的数据也是快速使用,快速删除。像形参、局部变量,在函数调用结束系统就会把数据主动销毁了。
堆空间大,由程序员维护,系统不会主动销毁。
示例代码如下:
#include <iostream> using namespace std; class TestNew { private: int ID; public: TestNew(int ID); ~TestNew(); }; TestNew::TestNew(int ID) { this->ID = ID; } TestNew::~TestNew() { std::cout<<"对象 "<<this->ID<<" 执行析构函数"<<std::endl; } void Test() { TestNew test(1);//创建对象1,不使用new,存储在栈中 TestNew *pTest = new TestNew(2);//创建对象2,使用new,存储在堆中 //delete pTest; } int main() { Test();//这个地方有点问题,pTest没有进行处理,会导致内存泄露,实际应用中要注意呀 }
输出结果:
对象 1 执行析构函数
说明函数调用结束,对象1被系统主动销毁了。
如果把Test()方法中,delete前的注释去掉。
输出:
对象 2 执行析构函数
对象 1 执行析构函数
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
这篇关于c++中堆栈及创建对象示例代码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用
- 2025-01-03混合搜索:用LanceDB实现语义和关键词结合的搜索技术(应用于实际项目)
- 2025-01-03停止思考数据管道,开始构建数据平台:介绍Analytics Engineering Framework
- 2025-01-03如果 Azure-Samples/aks-store-demo 使用了 Score 会怎样?
- 2025-01-03Apache Flink概述:实时数据处理的利器
- 2025-01-01使用 SVN合并操作时,怎么解决冲突的情况?-icode9专业技术文章分享