源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c++中堆栈及创建对象示例代码

  • 时间:2020-01-24 21:38 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c++中堆栈及创建对象示例代码
[b]简介[/b] 栈(stack),先进后出,位于一级缓存中,操作系统自动分配释放 ,存放函数的参数值,局部变量的值等,被调用时处于存储空间中,调用完毕立即释放。 堆(heap),堆包含一个链表来维护已用和空闲的不连续的内存块,存放在二级缓存中,一般由程序员分配释放。 [b]快速记忆方式:[/b] 一级缓存比二级缓存快,栈是一个先进后出列表,存取非常快,所以栈是在一级缓存中。 栈中不能随机取数据,只能取最上面的一个,存放的内容必然要有严格的存取顺序,所以适合函数调用时的形参、局部变量。 栈空间有限,一般PC一级缓存就几M,所以其中的数据也是快速使用,快速删除。像形参、局部变量,在函数调用结束系统就会把数据主动销毁了。 堆空间大,由程序员维护,系统不会主动销毁。 [b]示例代码如下:[/b]
#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没有进行处理,会导致内存泄露,实际应用中要注意呀
}
[b]输出结果:[/b] 对象 1 执行析构函数 说明函数调用结束,对象1被系统主动销毁了。 如果把Test()方法中,delete前的注释去掉。 [b]输出:[/b] 对象 2 执行析构函数 对象 1 执行析构函数 [b]总结[/b] 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部