博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
指针 && 动态内存分配
阅读量:7041 次
发布时间:2019-06-28

本文共 1129 字,大约阅读时间需要 3 分钟。

C++中的动态内存分配机制

c++中使用new和delete来完成在堆上对动态内存的分配和释放。

注.所有指针都应该被初始化

  如果指针指向的动态内存被释放或没有指向合法的地址,就应该将指针设置为nullptr,否则内存泄漏

变量:

  double* pvalue {};

  pvalue=new double;

  *pvalue=9.0;

  或

  double* pvalue {};

  pvalue=new double {9.0};

  或合并为一句

  double* pvalue {new double{9.0}};

  delete pvalue;

数组:

  char* pstr {new char[20]};

  delete [] pstr;

  pstr = nullptr;

  可以顺便初始化:int *data {new int [10] {2,3,4}};

多维数组:

  double (*pbeans)[4] {};

  pbeans= new double [3][4];

  或合为一步:double (*pbeans)[4] {

new double [3][4]};

  delete [] pbeans;

  pbeans = nullptr;

 

C语言中的动态内存分配机制

  malloc:

    double *ptd;

    ptd = (double *)malloc( N * sizeof(double));

    free(ptd);

    请求N个double类型的空间

 

  calloc:

    long *newmem;

    newmem =(long *)calloc( N,sizeof(long));

    第一个参数是所需内存单元的数量,第二个参数是每个单元以字节计的大小。calloc将块中全部位都置0。

 

  变长数组(VLA)中的动态内存分配:

    int n=5;

    int m=6;

      int ar[n][m];  //变长数组

      int (*p1)[6];

      int (*p2)[m];  //变长数组

    p1=(int (*)[6])malloc( n *6 *sizeof(int));

    p2=(int (*)[m])malloc( n *m *sizeof(int));  //变长数组

注:在数组传递作为参数传递过程中必须指定列

  如:double (int ar[][6]);

转载于:https://www.cnblogs.com/yunqie/p/5890045.html

你可能感兴趣的文章
UBoot常用命令手册
查看>>
Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化
查看>>
【数据结构与算法】二叉树深度遍历(递归)
查看>>
iOS开发--基于AFNetWorking3.0的图片缓存分析
查看>>
使用jqMobi开发app基础:弹出内容的设计
查看>>
3.Java集合总结系列:Set接口及其实现
查看>>
ExtJs之Element.select函数
查看>>
驱动程序调试方法之printk——自制proc文件(一)
查看>>
Swift 可选类型-备
查看>>
使用开源软件的原因
查看>>
数据结构和算法 – 10.集合
查看>>
Fragment之间传值
查看>>
关于新版SDK报错You need to use a Theme.AppCompat theme的两种解决办法
查看>>
Trace Sys
查看>>
Fiddler2 中文手册
查看>>
微信热门话题榜要上线了?腾讯微博的变身?
查看>>
Android 初阶自定义 View 字符头像
查看>>
Oracle Stream配置详细步骤
查看>>
设计模式学习笔记(十五:组合模式)
查看>>
继承与组合
查看>>