博客
关于我
new和delete用法小结
阅读量:789 次
发布时间:2023-02-15

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

在C语言中,内存分配和释放主要依赖于库函数malloc和free。然而,C++为我们提供了更为简便且功能强大的new和delete运算符,取代了传统的malloc和free。在使用这些运算符时,我们需要注意一些关键点。

首先,new和delete运算符与malloc和free的主要区别在于语法上的简化。new int(100)与new int[100]的区别在于,前者分配单个整数对象,后者分配一个整数数组。理解这一点对于正确使用动态内存分配至关重要。

接下来,我们来探讨如何在C++中动态分配和释放二维数组。传统的做法有以下几种:

  • char (*a)[N]; a = new char[m][N]; delete[] a;这是一种直接分配的方法,适用于二维数组的分配和释放。

  • char** a = new char*[m];for(int i = 0;i<m;i++)a[i] = new char[N];for(i = 0;i<m;i++)delete[] a[i];delete[] a;这种方法通过先分配一维指针数组,再为每个元素分配内存来实现二维数组的动态分配和释放。

  • 也可以直接分配一个大的一维数组,使用时通过调整下标来模拟二维数组的访问方式。这种方法在内存分配效率上可能不如前两种方法,但在某些情况下可能更为简便。

  • 最后,一个典型的示例:CShape** pshape = new CShape*[100];这里,CShape是一个用户定义的类。通过这种方式,我们可以动态分配一个CShape*的数组,数组大小为100。

    转载地址:http://vxcfk.baihongyu.com/

    你可能感兴趣的文章
    NAT-DDNS内网穿透技术,解决动态域名解析难题
    查看>>
    natapp搭建外网服务器
    查看>>
    NativePHP:使用PHP构建跨平台桌面应用的新框架
    查看>>
    Nat、端口映射、内网穿透有什么区别?
    查看>>
    Nat、端口映射、内网穿透有什么区别?
    查看>>
    nat打洞原理和实现
    查看>>
    NAT技术
    查看>>
    NAT模式/路由模式/全路由模式 (转)
    查看>>
    NAT模式下虚拟机centOs和主机ping不通解决方法
    查看>>
    NAT的两种模式SNAT和DNAT,到底有啥区别?
    查看>>
    NAT的全然分析及其UDP穿透的全然解决方式
    查看>>
    NAT类型与NAT模型详解
    查看>>
    NAT网络地址转换配置实战
    查看>>
    NAT网络地址转换配置详解
    查看>>
    navbar navbar-inverse 导航条设置颜色
    查看>>
    Navicat for MySQL 命令列 执行SQL语句 历史日志
    查看>>
    Navicat for MySQL 查看BLOB字段内容
    查看>>
    Navicat for MySQL(Ubuntu)过期解决方法
    查看>>
    Navicat Premium 12 卸载和注册表的删除
    查看>>
    Navicat 导入sql文件
    查看>>