C++开发笔记

本文介绍了C++中如何使用new和delete进行内存管理,包括对象的创建与销毁过程,并对比了与C语言中malloc()和free()的区别。文章还强调了避免内存泄漏的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内存与释放

malloc()与free()

是C语言的标准库函数

new与delete

是C++的运算符,可以用于申请动态内存和释放内存。在实现上实际上是调用了malloc()与free()函数,又进一步做了封装,相似却不同。两者在创建对象时,都有可能造成内存的泄露,但是new可以定义到那一行。
对于非内置类型而言,在创建对象时不止是分配内存,还会自动执行构造函数进行初始化,在对象消亡之前自动执行析构函数。
例子
char *pc = new char[10];//创建数组对象,长度为10,没有初始值
int*pp = new int[10]();//创建数组对象,长度为10,初始化为0
int *pi = new int(10);//new 一个int对象,初始值是10
delete pi;//释放int对象
delete []pc;//释放数组对象

new对象后,一定要释放。否则会内存泄露。
内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。

细节

  • 在定义变量后,一定要在构造函数中进行初始化,因为有时会因为没而有赋值而产生编译器查找不出的错误。
  • 在多个cpp文件中进行值传递的时候,多数是函数的参数传递,尽量使用结构体,或者是类定义的对象,进行传递参数。使用它们作为数据的载体。当我们想要把自己定义的非内置类型,向内置类型一样的使用,就需要在写入到第三个文件的 头文件中,然后包含进来。
  • 在涉及到计算的时候,一定要确保数值的准确,除法运算尽量
    不用int,一定考虑到,分母不为零的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值