Menu
CoddyTech

使用 'new' 进行动态内存分配

本课属于 Coddy C++ 学习旅程的“逻辑与流程”单元。第 6 课,共 56 课。

到目前为止,你已经使用过指向程序中已创建变量的指针。但如果你需要在程序运行时创建变量,该怎么办?这时,使用 new 关键字进行动态内存分配就很重要了。

new 关键字允许你在程序运行期间为堆上的变量分配内存。与在栈上创建的普通变量不同,动态分配的内存会一直存在,直到你显式释放它。

int* ptr = new int;  // 为一个整数分配内存
*ptr = 42;           // 给分配的内存赋值

在这个示例中,new int 会分配足够的内存来存储一个整数,并返回指向该内存位置的指针。然后,你可以使用解引用运算符来赋值,并像访问其他指针一样访问动态分配的变量。

当你直到运行时才知道需要多少内存,或者需要变量的生命周期超出其创建所在的作用域时,动态内存分配就特别有用。这种灵活性使 new 成为构建更复杂程序的强大工具。

challenge icon

挑战

简单

编写一个程序,演示如何使用 new 关键字在程序运行期间为变量动态分配内存。

程序将获得以下输入:

  • 一个整数值,用于存储在动态分配的内存中

你的程序应该:

  1. 使用 new 关键字为一个整数动态分配内存
  2. 将 new 返回的指针存储在名为 numPtr 的指针变量中
  3. 使用解引用运算符,将输入值赋给动态分配的内存
  4. 通过解引用指针,输出动态分配的内存中存储的值
  5. 输出指针中存储的内存地址

使用以下准确的输出格式:

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;
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: C++ 在线编译器