[自用5.]C++动态内存的分配、使用和释放

 new和delete

 new和delete是运算符,不是函数,因此运行效率比较高

为了与C语言兼容,C++仍保留了malloc和free,但是建议使用new和delete

new运算符

使用方法:

指针变量 = new 类型(常量);
指针变量 = new 类型[表达式]; //数组
指针变量 = new 类型[表达式][表达式]; //二维数组

 作用:从堆上分配一块“类型”指定大小的存储空间,返回首地址

其中,常量是初始化的值,可以省略,创建数组对象时,不能为对象指定初始值

delete运算符 

普通类型(非数据):delete 指针变量

数组:delete[] 指针变量 

#include <stdlib.h>
#include <iostream>
using namespace std;

int main(void) {
    //分配基础类型
    //第一种分配动态内存不执行初始化
    int *p1 = new int;
    *p1 = 100;
    //第二种分配动态内存同时执行初始化
    int *p2 = new int(100);
    // 第三种 malloc 返回值是 void *
    int *p3 = (int *)malloc(sizeof(int));
    free(p1); //基础类型可以 new free 可以混搭
    delete p3; //基础类型可以 malloc delete 可以混搭
    delete p2; //free(p2); 同样效果

    //分配数组变量
    int *b1 = (int *) malloc(sizeof(int)*10);
    //p[0] - p[9] *(p+9)
    int *b2 = new int[10];
    delete b1; // free(p1); 可以混搭
    //free(p2); //可以混搭
    delete[] b2;

    system("pause");
    return 0;
}

 内存泄漏

程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。

 

因此,申请的内存用完一定要释放

存储类型 

 自动变量(auto)、静态变量 (static)、外部变量(extern) 以及寄存器变量(register)

 auto - 函数中所有的非静态局部变量。比如,程序中的 int a,b,c;    int i=0; 等变量

register - 一般经常被使用的的变量(如某一变量需要计算几千次)可以设置成寄存器变量,register 变量会被存储在寄存器中,计算速度远快于存在内存中的非 register 变量。
static - 在变量前加上 static 关键字的变量。
extern - 把全局变量在其他源文件中声明成 extern 变量,可以扩展该全局变量的作用域至声明的那个文件,其本质作用就是对全局变量作用域的扩展。
注意: C++ 的 register 关键字已经优化,如果我们打印它的地址,它就变成了 普通的 auto 变量

 

变量作用域和生存周期 

可以返回函数内部的地址:
动态分配的内存地址
局部静态变量的地址
全局静态变量和外部变量的地址

 

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要申请使用GitHub Copilot,你需要按照以下流程进行操作: 1. 首先,你需要拥有一个GitHub帐号。如果还没有,请前往GitHub的官方网站注册一个帐号,并完成帐号验证的步骤。 2. 接下来,你需要申请GitHub学生开发包。在GitHub的官方网站上,你可以找到GitHub教程 学生认证页面,详细介绍了如何申请学生开发包。请按照页面上的步骤进行操作,并提供必要的信息进行申请。 3. 申请学生开发包后,你将获得GitHub Copilot的许可证。这将使你能够在PyCharm等支持GitHub Copilot的IDE中使用该功能。 4. 在PyCharm中配置和使用GitHub Copilot。首先,确保你已经安装了最新版本的PyCharm。然后,打开PyCharm并进入设置(Preferences)菜单。在设置菜单中,你应该能够找到GitHub Copilot的相关选项。根据提示完成配置并启用GitHub Copilot。 5. 现在,你可以在编写代码时体验GitHub Copilot的功能了。只需在编辑器中输入一些关键字或代码提示,Copilot将自动为你生成符合要求的代码。它可以智能地提供代码提示和建议,帮助你更好地理解代码的结构和语法,提高编写代码的效率和准确性。 通过遵循以上步骤,你可以成功申请并使用GitHub Copilot来提高你的编码效率和质量。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [copilot申请使用流程(自用)](https://blog.csdn.net/qq_46248455/article/details/125949597)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [史上最详细使用copliot AI保姆级教程来了](https://blog.csdn.net/m0_56022510/article/details/130263621)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值