C++ new用法

new 字符串

#include <iostream>
#include <cstring> // 用于 strcpy

int main() {
    // 分配内存并初始化字符数组
    char* myString = new char[14]; // 需要足够的空间来存储 "Hello, world!" 和终止字符 '\0'

    // 使用 strcpy 复制字符串到动态分配的内存中
    strcpy(myString, "Hello, world!");

    // 输出字符串内容
    std::cout << myString << std::endl;

    // 释放内存
    delete[] myString;

    return 0;
}


何时需要括号

有时括号是必需的,特别是在处理基础类型或数组时:

基础类型
int* p1 = new int(5); // 用值5初始化
int* p2 = new int;    // 未初始化,p2指向一个未定义值

在这个例子中,new int(5)将整数初始化为5,而new int只是分配了内存而没有初始化。

动态数组

对于动态数组,括号的使用方式不同:

int* arr1 = new int[5];       // 分配一个大小为5的整数数组,未初始化
int* arr2 = new int[5]();     // 分配一个大小为5的整数数组,并初始化为0
C++中的new关键字有三种用法: 1) new xxx: 这种用法是使用new关键字动态地创建一个xxx类型的对象。它会自动调用xxx类的构造函数来初始化这个对象,并返回一个指向这个对象的指针。 2) operator new(int size): 这种用法C++中的内存分配函数,类似于C语言中的malloc函数。它会分配指定大小的内存空间,并返回一个指向这块内存的指针。这种用法需要配合operator delete(void* ptr)来释放内存。 3) placement new: 这种用法是用来在指定的内存地址上构造对象,可以用来实现对象的定位构造。具体用法是在new后加上一个普通指针,指向要构造的对象的内存地址。这种用法适用于需要在已分配的内存区域上构造对象的场景。 引用 引用 引用<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [c++ new 的几个用法](https://blog.csdn.net/weixin_42076938/article/details/109441891)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [C++new的几种用法详解](https://blog.csdn.net/qq_44571245/article/details/123591412)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值