引用与指针的区别:

  1. 定义方式:引用是一个别名,使用'&'符号进行定义;指针是一个变量,用于存储其他变量的地址,使用'*'符号进行定义。
  2. 空值:引用必须在定义时初始化,并且不能为null或空值;指针可以为空,即指向null。
  3. 重定义:引用一旦绑定到一个对象,就不能再绑定到其他对象;指针可以通过重新赋值来指向不同的对象。
  4. 内存访问:引用不需要解引用即可访问对象;指针需要通过解引用操作符'*'来访问对象。
  5. 指针算术运算:指针可以进行算术运算,如加法、减法等;引用没有指针算术运算。

malloc/free与new/delete的区别:

  1. 分配内存的方式:malloc/free是C语言中的函数,用于动态分配和释放内存;new/delete是C++中的运算符,也用于动态分配和释放内存。
  2. 分配的对象类型:malloc/free可以分配任意类型的内存,但是返回的是void*指针,需要进行强制类型转换;new/delete用于分配和释放对象的内存,并且会调用对象的构造函数和析构函数。
  3. 内存分配失败处理:malloc在分配内存失败时返回NULL;new在分配内存失败时会抛出std::bad_alloc异常。
  4. 数组的分配:malloc/free可以用于分配数组,但是需要手动计算空间大小和释放;new/delete可以用于分配和释放数组,会自动计算空间大小和调用对象的构造函数和析构函数。
  5. 内存分配的方式:malloc/free使用的是C语言的堆内存分配方式;new/delete使用的是C++的自由存储区(堆)的内存分配方式。
引用与指针、malloc/free与new/delete的区别详解

原文地址: https://www.cveoy.top/t/topic/qm1d 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录