C++ 指针动态内存分配

动态内存分配

  • 动态内存分配:即由程序员手动的进行内存空间的分配、内存空间的释放的内存管理操作
  • C++代码中,变量、数组等对象的创建,是由C++自动分配内存的,称之为(自动)静态内存分配
    • (自动)静态内存管理,不会进行内存空间的自动清理。(无垃圾回收机制)
    • 需要手动的管理内存,即手动分配,用完清理

new运算符

  • 用于申请并分配内存空间并提供指向该空间的指针(内存地址)
  • 基本语法:
    • new type 申请普通变量空间
    • new type[] 申请数组空间

delete运算符

  • 用于释放内存,仅可用于new运算符申请的内存区域
  • 基本语法:
    • delete 指针  删除普通变量空间
    • delete[] 指针 删除数组空间
  • 建议:写完new后,立刻写delete,然后再写业务逻辑代码(避免忘记)
    int *pt = new int;
    *pt = 10;
    cout << "申请内存空间存放:" << *pt << endl;
    delete pt;
    cout << "pt内存空间已释放" << endl;

    int *pt2 = new int[3];
    pt2[0] = 1;   // 指针也可以用下标, 等同于*(p+0)
    *(pt2 + 1) = 2;  // 等同于 pt[1]

    cout << "*pt2申请内存空间大小:" << sizeof(pt2) << endl;
    cout << *pt2 << endl;
    cout << pt2[1] << endl;
    delete[] pt2;  // 释放内存空间
    cout << "pt2内存空间已释放" << endl;

指针悬挂

  • 指针指向的区域已经被delete回收,这种称为:指针悬挂
  • 如何避免:
    • 不要轻易进行指针之间相互赋值
    • delete回收空间之前,确保此空间100%不再被使用
posted @ 2024-05-09 02:57  风陵南  阅读(173)  评论(0)    收藏  举报