内存与指针——动态申请内存

本文介绍了C++中动态内存管理的两种方式——`malloc`和`new`的使用,包括一维和二维数组的申请与释放。同时,讨论了指针修改常量值的原理,并强调了动态内存释放后应将指针设为NULL以避免野指针问题。最后,分析了野指针产生的原因和预防措施。
摘要由CSDN通过智能技术生成

内存与指针——动态申请内存

1、malloc

头文件malloc.h

一维内存申请:类型标识符 *变量

变量名=(类型标识符*)malloc(sizeof(类型标识符)*数组大小);

二维内存申请:类型标识符 **变量

变量名=(类型标识符**)malloc(sizeof(类型标识符*)*数组行大小);

for(int i=0;i<数组行大小;i++)

变量名[i]=(类型标识符*)malloc(sizeof(类型标识符)*数组列大小);

释放:free(变量名)

变量名=NULL;

2、new

类型标识符 *变量名;

变量名=new类型标识符[数组大小]

释放:delete[] 变量名;

变量名=NULL;

用指针强制修改常量的值本质上是修改常量所指向的内存的值,但是常量本身不会被修改

指针也可以指向结构体变量

在动态申请内存后释放内存指针的时候可能由于指针指向的位置的变化导致程序崩溃。

3、避免野指针的形成

野指针形成原因

  • 指针创建之后没有初始化
  • 指针在使用free()和delete()函数释放了内存但是没有释放指针

即没有令指针=NULL

  • 指针创建和操作没在一个作用域

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值