C++开发笔记

来源:互联网 发布:阿里云更换系统 编辑:程序博客网 时间:2024/06/05 16:23

内存与释放

malloc()与free()

是C语言的标准库函数

new与delete

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

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

细节

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