使用 'new' 进行动态内存分配
本课属于 Coddy C++ 学习旅程的“逻辑与流程”单元。第 6 课,共 56 课。
到目前为止,你已经使用过指向程序中已创建变量的指针。但如果你需要在程序运行时创建变量,该怎么办?这时,使用 new 关键字进行动态内存分配就很重要了。
new 关键字允许你在程序运行期间为堆上的变量分配内存。与在栈上创建的普通变量不同,动态分配的内存会一直存在,直到你显式释放它。
int* ptr = new int; // 为一个整数分配内存
*ptr = 42; // 给分配的内存赋值在这个示例中,new int 会分配足够的内存来存储一个整数,并返回指向该内存位置的指针。然后,你可以使用解引用运算符来赋值,并像访问其他指针一样访问动态分配的变量。
当你直到运行时才知道需要多少内存,或者需要变量的生命周期超出其创建所在的作用域时,动态内存分配就特别有用。这种灵活性使 new 成为构建更复杂程序的强大工具。
挑战
简单编写一个程序,演示如何使用 new 关键字在程序运行期间为变量动态分配内存。
程序将获得以下输入:
- 一个整数值,用于存储在动态分配的内存中
你的程序应该:
- 使用
new关键字为一个整数动态分配内存 - 将
new返回的指针存储在名为numPtr的指针变量中 - 使用解引用运算符,将输入值赋给动态分配的内存
- 通过解引用指针,输出动态分配的内存中存储的值
- 输出指针中存储的内存地址
使用以下准确的输出格式:
Value: [value]
Address: [memory address]内存地址将以十六进制格式显示,这是 C++ 显示动态分配内存地址的方式。
亲手试试
#include <iostream>
using namespace std;
int main() {
// 读取输入
int value;
cin >> value;
// TODO: 在下方编写你的代码
// 使用 'new' 为一个整数动态分配内存
// 将指针存入名为 'numPtr' 的变量
// 将输入值赋给动态分配的内存
// 输出结果
cout << "Value: " << /* 在此处解引用 numPtr */ << endl;
cout << "Address: " << /* 输出 numPtr 中存储的地址 */ << endl;
return 0;
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: C++ 在线编译器