什么叫静态内存管理呢?什么叫动态内存管理呢?动态内存管理的步骤是什么呢?如何对int类型空间进行动态内存管理呢?如何对double类型空间进行动态内存管理呢?如何对数组类型空间进行动态内存管理呢?

问题描述:

根据下列代码和结果回答下列问题。

代码:

// Created by 黑马程序员.
#include "iostream"
using namespace std;

/*
 * new 类型、 new 类型[n]
 * delete 指针、delete[] 指针
 */

int main()
{
    int *p = new int;
    *p = 10;
    cout << "new申请的4字节空间内,存放的是:" << *p << endl;

    delete p;

//    int num = 10;
//    cout << num << endl;
//    delete &num;

    int *p_arr = new int[5];     // 申请5元素可以存放int类型的数组空间
    // p_arr的地址,就是数组空间的内存区域的开头(第一个元素的位置)
    p_arr[0] = 10;      // 等同于 *p_arr = 10;
    p_arr[1] = 20;      // 等同于 *(p_arr+1) = 10;
    p_arr[2] = 30;
    *(p_arr+3) = 40;
    p_arr[4] = 50;

    cout << "数组的第一个元素是:" << p_arr[0] << endl;
    cout << "数组的第二个元素是:" << p_arr[1] << endl;
    cout << "数组的第三个元素是:" << p_arr[2] << endl;
    cout << "数组的第四个元素是:" << p_arr[3] << endl;
    cout << "数组的第五个元素是:" << p_arr[4] << endl;

    delete[] p_arr;
    return 0;
}

结果:

D:\CLion_code\cmake-build-debug\CLion_code.exe
new申请的4字节空间内,存放的是:10
数组的第一个元素是:10
数组的第二个元素是:20
数组的第三个元素是:30
数组的第四个元素是:40
数组的第五个元素是:50

Process finished with exit code 0

什么叫静态内存管理呢?什么叫动态内存管理呢?动态内存管理的步骤是什么呢?如何对int类型空间进行动态内存管理呢?如何对double类型空间进行动态内存管理呢?如何对数组类型空间进行动态内存管理呢?动态内存管理的优缺点是什么呢?

问题解答:

什么叫静态内存管理呢?
静态内存管理是指传统方式创建普通变量或数组,其内存由C++自动管理。即编译器在程序开始时分配内存,并在程序结束时自动释放内存。静态内存管理在整个程序运行期间保持不变,不会清理用不到的内存空间。

什么叫动态内存管理呢?
动态内存管理是指程序员手动进行内存空间的分配和释放操作。程序员可以根据程序的需求,随时分配和释放内存,这样可以灵活地控制内存的使用。

动态内存管理的步骤是什么呢?

  1. 使用 new 运算符申请空间new 运算符分配指定大小的内存,并返回指向该内存的指针(地址)。
  2. 使用 delete 运算符释放空间delete 运算符用于释放由 new 申请的内存空间。对于数组类型,使用 delete[] 来释放内存。

如何对 int 类型空间进行动态内存管理呢?

int *p = new int;  // 动态申请int类型的内存空间
*p = 10;           // 向申请的空间中存放数据
delete p;          // 释放申请的int类型空间

如何对 double 类型空间进行动态内存管理呢?

double *p = new double;  // 动态申请double类型的内存空间
*p = 20.5;               // 向申请的空间中存放数据
delete p;                // 释放申请的double类型空间

如何对数组类型空间进行动态内存管理呢?

int *p_arr = new int[5];  // 动态申请int类型数组空间,可以存放5个元素
p_arr[0] = 10;            // 向数组的第一个元素存放数据
p_arr[1] = 20;            // 向数组的第二个元素存放数据
// ... 初始化其他元素
delete[] p_arr;           // 释放申请的数组类型空间

动态内存管理的优缺点是什么呢?

  • 优点:动态内存管理允许程序员手动控制内存的分配和释放,避免内存空间的浪费,尤其适合处理动态数据结构,如链表、树等。程序员可以根据需要申请和释放内存,使用更灵活、更高效。
  • 缺点:动态内存管理考验程序员的水平。管理不当可能导致内存泄漏(忘记释放内存)或非法内存访问(访问已经释放的内存),从而引发程序错误或性能问题。如果没有妥善管理,可能会适得其反,影响程序的稳定性和效率。

花絮:

什么叫静态内存管理呢?传统方式创建普通变量或数组,其内存由C++自动管理,称之为静态内存管理。静态内存管理,不会清理用不到的内存空间。什么叫动态内存管理呢?即由程序员手动的进行内存空间的分配、内存空间的释放等内存管理操作。动态内存管理的步骤是什么呢?第一步、new运算符申请空间,提供该空间的指针(地址)。第二步、 delete运算符申请的空间,仅用于new申请的空间。如何对int类型空间进行动态内存管理呢?如何对double类型空间进行动态内存管理呢?如何对数组类型空间进行动态内存管理呢?动态内存管理的优缺点是什么呢?优势是手动控制内存,避免内存空间浪费。劣势是考验程序员水平,用的好效率高,用不好有反效果。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神笔馬良

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值