当前位置: 首页 > news >正文

河南网站建设哪里有安徽建站优化哪里有

河南网站建设哪里有,安徽建站优化哪里有,品牌vi设计一般多少钱,现在从深圳回来需要隔离吗?创建并初始化C对象 当我们创建一个C对象时#xff0c;它需要占用一些内存#xff0c;即使我们写一个完全为空的类#xff0c;类中没有成员#xff0c;什么也没有#xff0c;它至少也要占用一个字节的内存。但是我们类中有很多成员#xff0c;它们需要存储在某地方#…创建并初始化C对象 当我们创建一个C对象时它需要占用一些内存即使我们写一个完全为空的类类中没有成员什么也没有它至少也要占用一个字节的内存。但是我们类中有很多成员它们需要存储在某地方当我们决定开始使用这个对象时我们会创建一堆变量对象有一堆变量我们需要在电脑的某个地方分配内存这样我们就可以记住这些变量设置的值。 应用程序会将内存主要分为两部分栈和堆还有其他部分的内存比如源代码的区域。 在C中我们要选择对象要放在哪里对象是在栈上还是在堆上创建它们有不同的功能差异。 栈栈对象有一个自动的生存期他们的生存期实际上是由它声明的地方的作用域决定的只要变量超出作用域也就是说内存被释放了,因为当作用域结束的时候栈会弹出作用域里面的东西栈上的任何东西会被释放。 堆一旦在堆中分配一个对象实际上你已经在堆上创建了一个对象它会一直待在那里直到你做出决定确定不需要它想要释放这个对象那怎末处理这段内存都行。   代码案例 在栈上创建  在什么时候在栈上创建对象 几乎所有的时候如果你能像这样在栈上创建对象那就像这样创建对象因为这是C中最快的方法也是可以管控的方法去初始化对象 某些情况下不能这么做的原因? 1、如果将实例化对象放到main函数的生存期外 void Function(){int a 2;Entity entity;} 一旦到达函数结尾的花括号这个entity会从内存中被销毁 当我们在main函数中调用Function时就为这个函数创建了一个栈结构它包含了我们声明的所有局部变量其中包括基本类型也包括我们的类和对象,当函数结束时栈帧会被销毁即栈上所有的内存所有创建的变量都消失了 如果想让括号{}内的实例化对象在作用域之外依然存在就不能分配到栈上需要使用堆分配。 2、如果entity的规模太大可能有太多的entity,可能没有足够的空间在栈上分配因为栈通常非常小通常是1M/2M # include iostream # include string using namespace std;class Entity { private:string m_Name; //只有一个成员是一个字符串 public:Entity() : m_Name(Unknown) {}Entity(const string name) : m_Name(name) {}const string GetName() const { return m_Name; } };int main() {// 1、在栈上创建Entity entity; // 实际上调用了默认构造函数Entity() : m_Name(Unknown)cout entity.GetName() endl;Entity entity1(chen);// 等价于 Entity entity1 Entity(chen)cout entity1.GetName() endl;/*在什么时候在栈上创建对象几乎所有的时候如果你能像这样在栈上创建对象那就像这样创建对象因为这是C中最快的方法也是可以管控的方法去初始化对象某些情况下不能这么做的原因?1、如果将实例化对象放到main函数的生存期外void Function(){int a 2;Entity entity;}一旦到达这个花括号这个entity会从内存中被销毁当我们调用Function时就为这个函数创建了一个栈结构它包含了我们声明的所有局部变量其中包括基本类型也包括我们的类和对象,当函数结束时栈帧会被销毁即栈上所有的内存所有创建的变量都消失了Entity* e;{Entity entity2(cherno);e entity2;cout entity2.GetName() endl;} 一旦出了{}作用域就到达了栈端entity2对象就已经不存在了如果想让括号{}内的实例化对象在作用域之外依然存在就不能分配到栈上需要使用堆分配cin.get();return 0; } 在堆上创建 在堆上创建首先要做的就是在改变类型将Entity改成Entity*,通过new关键字这里最大的区别不是那个类型变成了指针而是new关键字new关键字是关键。 Entity* entity new Entity(cherno);当我们调用new Entity时会在栈上分配内存调用构造函数这个new Entity实际上会返回一个Entity*,它会返回entity在堆上被分配的内存地址。 使用new关键字必须调用delete释放内存 delete 变量名delete entity; 性能问题在堆上分配要比栈花费更长的时间而且在堆上分配的话您必须手动释放被分配的内存 # include iostream # include string using namespace std;class Entity { private:string m_Name; //只有一个成员是一个字符串 public:Entity() : m_Name(Unknown) {}Entity(const string name) : m_Name(name) {}const string GetName() const { return m_Name; } };int main() {// 2、在堆上创建/*在堆上创建首先要做的就是在改变类型将Entity改成Entity*,通过new关键字这里最大的区别不是那个类型变成了指针而是new关键字new关键字是关键当我们调用new Entity时会在栈上分配内存调用构造函数这个new Entity实际上会返回一个Entity*,它会返回entity在堆上被分配的内存地址*/Entity* entity new Entity(cherno);//释放内存//delete 变量名delete entity;/*性能问题在堆上分配要比栈花费更长的时间而且在堆上分配的话您必须手动释放被分配的内存*/cin.get();return 0; } 创建对象的两种方法如何选择 如果对象太大或者需要显示地控制对象的生存期那就是用堆创建其他情况就是用栈创建。
http://www.yayakq.cn/news/3490/

相关文章:

  • 国内比较好用的建筑案例网站婚庆网页设计
  • 好用的ppt模板网站电子商务网站建设的步骤
  • 南通模板建站多少钱wordpress去除category
  • 公司备案的网站被别的公司盗用旅游网站的后台管理系统怎么做
  • 做网站卖电脑网站运营一个月多少钱
  • 建设部执业考试网站主域名进入网站
  • 免费域名注册网站有哪些杭州微信网站开发
  • ps里怎么做微网站模板帝国cms 网站描述的全局变量
  • 建设网站 怀疑对方传销 网站制作 缓刑游戏网站建设表格
  • 手机与pc网站同步模板电脑上做简单的网站
  • 电商网站开发app意义一级做a视频在线观看网站
  • 企业网站建设及推广网站下载软件怎么安装
  • 中国做w7的网站wordpress seo设置
  • 威海市建设局网站mip织梦手机网站模板
  • 宁波网站优化公司凡科建站后属于自己的网站吗
  • 格尔木有做网站的吗优秀的广告设计作品
  • 盐城做网站企业单位建网站
  • 360网站卫士代备案流程免费建立微信网站
  • 海外建站流程济南市住建局官网
  • 麦包包的网站建设分析陕西省城乡建设厅网站
  • 做薪酬调查有哪些网站百度有个学习的网站建设叫什么
  • 宁波自己建网站被称为网站开发神器
  • 中山网站建设文化流程汕头有哪些需要建网站的公司
  • a 朝扬网络网站建设手机网站平台
  • 珠海网站建设陈玉铭网站后台管理员做链接
  • 网站统计关键词大连最繁华的区是哪个区
  • 荣成信用建设官方网站WordPress文章彩色标签
  • 东莞网站seo公司哪家大怎样建网站才赚钱
  • 网站内容建设包括什么龙岩设计师
  • 网站开发搭建ssc p2p 互助浙江广厦建设职业技术学院招生网站