一、new 操作符介绍
在 C++ 中,new 和 delete 是用于动态内存管理的操作符。它们允许程序在运行时分配和释放内存,这对需要灵活控制内存生命周期的场景非常重要。new 用于在堆(heap)上动态分配内存,并调用构造函数(如果是对象)。
语法:
类型* 指针 = new 类型;
类型* 指针 = new 类型(初始化值);
类型* 数组指针 = new 类型[数组大小];
功能:
1.动态分配内存:new 会在堆上分配内存。
2.调用构造函数(如果适用):为对象类型调用对应的构造函数。
3.返回指针:返回分配的内存块的指针。
示例:
// 分配单个整数
int* pInt = new int(10); // 分配并初始化为10
std::cout << *pInt << std::endl;
// 分配数组
int* pArray = new int[5]; // 分配5个整数的数组
for (int i = 0; i < 5; ++i) {
pArray[i] = i + 1;
std::cout << pArray[i] << " ";
}
std::cout << std::endl;
二、new的多种操作方式
new 操作符有多种变体和用法,主要包括以下几种:
1. 普通 new
用于分配单个对象的内存并调用构造函数。
int* p = new int; // 分配未初始化的整数内存
int* pInit = new int(10); // 分配并初始化为10
2.定位 new(Placement New)
允许在特定的内存地址上构造对象。
#include <iostream>
#include <new> // 包含 placement new
int main() {
char buffer[sizeof(int)]; // 提供内存空间
int* p =<