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