当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

<b>C++:从栈和堆来理解C#中的值范例和引用范例</b>[VC/C++编程]

赞助商链接



  本文“<b>C++:从栈和堆来理解C#中的值范例和引用范例</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

C++中并没有值范例和引用范例之说,尺度变量大概自定义对象的存取默许是没有辨别的.但假如深化地来看,就要理解C++中,管理数据的两大内存区域:栈和堆.

栈(stack)是近似于一个先进后出的抽屉.它的体积是有限的,普通为2M左右.

而堆(heap)则相对来说体积可以很大,这普通跟计算机的虚拟内存设置有关系.

栈中存取对象的内存是自动回收的,用完即销毁了,普通办法内部的变量和参数都是通过栈来存取的(但也正因为如此,它们的生命周期很短).但它的问题是,体积有限.

一些大的对象,我们大概要通过堆来成立它.程序员可以掌握这些对象什么时刻成立,什么时刻销毁.这无疑带来了机动性,也同时带来了一些风险,事实上,相当一部份的程序的崩溃都是因为不恰本地利用了堆,以及没有及时清理在堆上申请的内存.大概反过来说,大概会清理多次(这也会招致崩溃).

普通来说,假如但愿某个对象大概变量的生命更长一些,也可以将其作为全局变量大概静态变量.但那样又招致了它们必须等到程序完毕才会释放.

下面我用一个例子来演示一下这个问题

#include <iostream>
using namespace std;

class human{
public:
    void Talk();
    ~human(){cout<<"析构函数在工作..."<<endl;}
private:
    int age;
};

void human::Talk(){
    cout<<"Hello"<<endl;
}

int main()
{
    human h;//成立一个human对象,这个对象就生存在栈上,它所需的大小是按照其成员决意的
    cout<<"h的大小为:"<<sizeof(h)<<endl;
    cout<<"h的地址是:"<<&h<<endl;
    h.Talk();

    human *p=new human();//通过new关键字,是在堆上面成立一个对象,它所申请的空间也是内部成员决意的.这里也是4
    cout<<"p的大小为:"<<sizeof(p)<<endl;
    cout<<"p的地址为:"<<p<<endl;
    p->Talk();
    delete p;
    //删除p这个指针指向的堆上面的内存.假如用完该对象,我们不删除,那么该内存就一向存在,并不会自动删除.这就称为内存泄露.
    //假如范例定义了析构函数,此时将调用它(反之,假如一个对象是在堆上成立的,那么除非调用delete语句,不然析构函数不会运行
    cout<<"p的地址为:"<<p<<endl;//我们只是删除了该块内存上面的数据,地址还是存在的
    //倡议在删除p之后,将其置为0
    //p=0;
    //delete p;//但假如再次删除,又会发生崩溃,因为该内存已经没有了.
    return 0;
}


  以上是“<b>C++:从栈和堆来理解C#中的值范例和引用范例</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .