zoukankan      html  css  js  c++  java
  • 动态内存分配

    动态内存分配

    在c语言中,我们有malloc。 在C++ 中,我们用new。这种分配方式更、省、内、存!

    第一种用法:

    分配一个变量。

    P = new T;
    

    在这里,P是一个类型为 *T 的指针,T代表一个类型的名字。这句话的作用就是动态分配出一片大小为 sizeof ( T ) 字节的
    内存空间。并将该内存空间的起始地址赋值给P。

    举个栗子:

    int *pn ;
    pn = new int ;
    *pn = 5 ;
    

    第二种用法:

    分配一个数组。

    P = new T [N] ;
    

    (历史总是惊人地相似) 同样的,T为任意类型名。 P是一个类型为T*的指针。
    不同的:N是要分配的数组元素的个数。 可以是整形表达式哦~~ 。
    它的作用:动态分配出一片大小为 N * sizeof ( T ) 字节的内存空间,并将该内存空间的起始地址赋值给P。

    举个栗子:

    int *pn;
    int i = 5 ;
    pn = new int [ i * 20 ];
    pn [0] = 20;
    pn [100] = 30;//这句话的话,编译没问题,运行会RTE *数组越界。 因为他只申请了100个空间,在第pn[99]是最后一个
    

    2

    这个动态空间先申请,然后用。但用完了之后也不能不去管它。用完后必须把它释放掉。这时,就轮到我们的 delete 函数出场。如果不释放,你占用的空间就一直在那里。最要命的一点事,别的程序无法使用它。如果你一直申请下去,一直不释放,那你就刺激了。最终有可能导致操作系统的内存空间不够用。你系统就这么炸了。

    写法:

    delete +指针 // 指针必须指向动态分配的空间
    

    具体的例子:

    int *P= new int;
    * p = 5;
    delete p;//到此,一切正常
    delete p;//注意:释放操作只能做一次,这句话很可能导致你的程序异常。
    
  • 相关阅读:
    elk6.3 centos集群搭建 head插件安装
    10.2半群,同余关系,半群直积,商半群
    10.1代数结构
    9.4 关系的闭包
    9.5 等价关系
    9.6偏序关系
    9.3 关系的表示
    9.1 关系及关系性质
    差分数组
    拓扑排序
  • 原文地址:https://www.cnblogs.com/tushukai/p/11273360.html
Copyright © 2011-2022 走看看