华人澳洲中文论坛

热图推荐

    干货 | 如何区别c++中的栈和堆?

    [复制链接]

    2022-10-13 18:22:57 23 0

    得多人,包罗我本人,常常搞不懂这两个的区分,尝试记忆过量次,但一直无功而返。
    留意我这里的写法,我把栈写在了后面,它是由计算机采取高效算法办理的一种内存工具,先进后出,十分法则、迷信,所以永久都不成能有一个内存块从栈中弹出,并且栈在顺序中的运用也是最普遍的,就算是函数的调用也是用栈去实现的,函数调用中的参数、前往地址、EBP(临时不必管,前面会引见这是啥的)和局部变量也都是采取栈的形式寄放的。


    那你可能会问了:既然栈这么弱小,为什么还要用堆?缘故是栈太诚实、太法则、太机械了,即使运转1000年也不会改动。但你要知道,顺序是活的,因人而动,天天都在变动,假如使用栈这个老呆板,想必用不了多久你就会疯掉的。


    所以,灵敏性是堆的一大劣势。
    但偏偏是太灵敏了,所以堆的运转效力要低很多。
    很容易了解,由于顺序员的程度有高有低,算法程度更是错落不齐,乃至是bug频出,在这样的状况下你怎么包管运转效力高?扯淡嘛!
    堆是顺序员本人管制的,次要是用来调配内存空间,静态调配。
    想用的时分就用new或者malloc来请求一块内存空间,用完了要释放,用delete或者free。


    所以你看,读了我的文章这么繁杂难记头疼死人的问题,一下子不就搞定了吗?所以我常跟学员说,不是常识难,而是你找了个不靠谱的教师,要知道“良师一句胜过庸师百句”啊!
    我的身旁充斥着少量这样的人,明明学习办法不合错误,还硬着头皮往里钻,人家都曾经告知你了不克不及这么干,既费时间又伤膂力,可是犟死的牛死犟地往前冲,谁也挡不住,这类人要是轻松掌握常识,那才是老天不公呢!

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    返回列表 本版积分规则

    :
    中级会员
    :
    论坛短信
    :
    未填写
    :
    未填写
    :
    未填写

    主题45

    帖子53

    积分239

    图文推荐