zoukankan      html  css  js  c++  java
  • C++中动态内粗分配new标识符的使用

            new是C++中内建的操作符,具体用法见下面详解:

    (1)new用法一:基本数据类型的内存动态分配

            int *p;

            p=new int(10);  

           在这个例子中首先定义个一个指向整型类型的指针,紧接着用new运算符给它分配内存空间。new后面的类型要跟定义的指针指向的类型一致,而且空间中存储的就是整型变量10;

         这个过程就相当于

           int p=10;

           那么为什么不直接使用 int p=10;呢?这是因为用new可以动态的开辟内存空间,可以在一定程度上减少静态数组对内存的浪费。

    (2)new用法二:一维数组的内存动态分配:

           int *p;

           p=new int [10];

           这里动态地分配了一个数组,我们要记住是怎么分配的:首先用new 说明是动态地区分配,紧接着的就是要分配的数据类型,然后一个方括号,里面是想要分配类型的大小。

           这个过程就相当于:

        int p[10];

    (3)new用法三:一维数组的内存动态分配:

            int ** p;

            p=new int* [10];

            for(int i=0;i<10;i++)

                 p[i]=new int[20];

            这个过程就相当于:

            int p[10][20];

            下面来分析一下:

         int ** p;  //定义了一个指向int指针类型的指针;

         p=new int* [M];  //M是一个常量,为p分配M个大小的int*类型的空间,代表10行。也就是说我给你分配的是指向整型类型的指针的空间,那么在我分配的空间里面只能装指针,其它的不能装

         for(int i=0;i<M;i++)

               p[i]=new int[20];   //这里p[i]就是刚才分配的空间,然后再给它分配下一层空间,也就是20列

      释放二维数组所占资源,形式如下:

         for(int j=0;j<M;j++){

       delete []p[i];

    }

    delete []p;

  • 相关阅读:
    [Erlang 0106] Erlang实现Apple Push Notifications消息推送
    一场推理的盛宴
    [Erlang 0105] Erlang Resources 小站 2013年1月~6月资讯合集
    [Erlang 0104] 当Erlang遇到Solr
    [Erlang 0103] Erlang Resources 资讯小站
    history.go(-1)和History.back()的区别
    [Java代码] Java用pinyin4j根据汉语获取各种格式和需求的拼音
    spring中context:property-placeholder/元素
    Java中的异常处理:何时抛出异常,何时捕获异常?
    用Jersey构建RESTful服务1--HelloWorld
  • 原文地址:https://www.cnblogs.com/hust-yingjie/p/5626074.html
Copyright © 2011-2022 走看看