c++中new的三种用法详细解析

C++中new的三种用法详细解析

new 是 C++ 中一个非常重要的关键字,主要用于动态分配内存。通常情况下,使用 new 就意味着需要手动管理这块内存的释放。new 的语法形式有三种,分别是:

  1. new operator
    • new 运算符来申请动态内存,并返回该内存的地址,也就是指针类型。
    • 语法是 new 数据类型;。创建出来的对象默认初始化,如果需要初始化,可以在类型名后加括号,并在括号内传递初始化参数。
  2. new type(n)
    • 创建指定类型的数组,并返回该数组首元素的地址。
    • 语法是 new 数据类型 [数组元素个数];。创建出来的数组按照默认方式进行初始化,如果需要初始化,可以在类型名后加括号,并在括号内传递初始化参数。
  3. placement new
    • 在指定的内存地址上构造一个对象。
    • 语法是 new (地址) 类型名(参数列表);。该内存应该在使用 delete 操作符时清理,这样才能避免内存泄漏。

示例一

下面是以 new operator 动态分配内存的示例代码:

#include <iostream>
using namespace std;

int main() {
    int *ptr = NULL;
    ptr = new int; // 动态分配内存空间,类型是int指针
    *ptr = 11;     // 初始化内存空间
    cout << "ptr指向的内存地址存储的值:" << *ptr << endl; // 打印出 "ptr指向的内存地址存储的值:11"
    delete ptr;  //释放指针变量ptr指向的动态内存空间
    ptr = NULL;  // 将指针变量ptr指向空地址
    return 0;
}

该代码中,首先通过 new 运算符动态分配了一段 int 类型的内存,然后为该内存设置了值,最后通过 delete 操作符释放了该内存空间。

示例二

下面是创建动态数组的示例代码:

#include <iostream>
using namespace std;

int main() {
    int* arr;  // 定义一个指针
    int n = 5; // 数组长度
    arr = new int[n]; // 动态分配内存空间,类型是int数组
    for (int i = 0; i < n; ++i) {
        arr[i] = i + 1; // 初始化内存空间
    }
    cout << "数组元素:";
    for (int i = 0; i < n; ++i) {
        cout << arr[i] << " "; // 打印出 "数组元素:1 2 3 4 5"
    }
    delete [] arr; //释放指针变量arr指向的动态内存空间
    arr = NULL;    // 将指针变量arr指向空地址
    return 0;
}

该代码中,首先通过 new 运算符动态分配了一段 int 类型的数组内存,然后给数组进行了初始化,最后通过 delete 操作符释放了该内存空间。

以上是对 C++ 中 new 操作符的三种用法的详细解析。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++中new的三种用法详细解析 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • C/C++ Linux Socket网络编程流程分析

    C/C++ Linux Socket网络编程流程分析 什么是Socket Socket是计算机网络中对于通信队列和编程接口的抽象。一句话概括,Socket是一种特殊的文件,它通过文件IO的方式向网络发送和接收数据。 Socket网络编程流程 创建Socket 创建一个Socket需要调用socket()函数,它有三个参数,分别是:地址族、类型、协议。在Lin…

    C 2023年5月23日
    00
  • Objective-C Json 实例详解

    Objective-C Json 实例详解 什么是JSON? JSON是一种轻量级的数据交换格式,它是基于JavaScript对象语法的子集,易于人们理解和编写,也易于计算机解析和生成。在近年来的web开发中,JSON已经成为前后端数据交互最常用的格式之一。 使用Objective-C解析JSON 在Objective-C中,解析JSON非常方便,可以使用系…

    C 2023年5月23日
    00
  • LG G4c怎么样 LG G4c参数配置介绍

    LG G4c怎么样 LG G4c参数配置介绍 LG G4c是一款由LG电子公司生产的安卓智能手机,以下将对其进行详细介绍。 硬件参数 LG G4c采用了5英寸IPS LCD显示屏,分辨率为720 x 1280像素,并搭载了四核心1.2 GHz Cortex-A53处理器。这款手机拥有1GB RAM和8GB ROM,设备支持MicroSD卡扩展。此外,LG G…

    C 2023年5月23日
    00
  • 一文带你搞懂C语言预处理宏定义

    一文带你搞懂C语言预处理宏定义 什么是预处理宏定义 预处理宏定义是用宏定义指令将某个字符序列映射为另一个字符序列的编程技巧。在源代码编译之前,编译器会通过一个预处理器扫描源代码文件,将其中预处理宏定义的字符序列全部替换为对应的字符序列,这个过程称为宏展开。 预处理宏定义可以用来避免大量重复输入代码,增加代码的可维护性和可读性,同时也可以定义一些通用的常量或者…

    C 2023年5月23日
    00
  • C语言实现数学表达式运算

    C语言实现数学表达式运算 概述 C语言提供了一系列函数库,可以实现数学表达式的运算。本篇攻略将介绍如何使用C语言实现数学表达式的运算的方法。 函数库 在C语言中实现数学表达式计算,可以使用数学函数库<math.h>和字符串处理函数库<string.h>。 <math.h>函数库 该函数库中包括了常见的数学函数,例如四则运算…

    C 2023年5月22日
    00
  • 学习C语言的第一天

    今天学习C语言学习了三个部分: 第一个部分是软件环境的搭建,如何搭建一个项目 使用工具:visual studio 2010 搭建过程:新建项目、配置设置(主要是解决运行后一闪而过的问题) 第二部分是编写一个简单的C语言程序代码 #include<stdio.h> //引入头文件 io指的是输入与输出 int main(){ //不可少的入口函数…

    C语言 2023年4月18日
    00
  • C++ 内存分配处理函数set_new_handler的使用

    当C++程序在运行时发现内存分配失败时,会抛出一个std::bad_alloc异常。为了避免程序崩溃,我们可以使用set_new_handler函数来注册一个新的处理函数,当内存分配失败时,程序会调用该函数来处理内存分配失败的情况。 set_new_handler函数的语法 set_new_handler函数是一个全局函数,它的原型如下: std::new_…

    C 2023年5月23日
    00
  • 详解C语言的预处理效果

    详解C语言的预处理效果 C语言的预处理器是所有C编译器的一部分。在编译代码之前,预处理器会处理源代码文件,执行一系列指令,以生成最终的代码文件。本文将详细介绍C语言的预处理器是如何工作的,以及预处理器有哪些常用指令。 预处理器的基础知识 在C程序中,任何以#字符开头的行都是预处理器指令。预处理指令可以出现在代码的任何位置,但通常出现在源代码文件的顶部。预处理…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部