malloc/free与new/delete的区别与联系—引用和指针(五)

目录

 

malloc/free与new/delete的区别

C语言中各自标准内存分配函数是如何使用的

malloc

free

calloc

realloc


malloc/free与new/delete的区别

  • 区别一:malloc/free是C/C++的标准库函数,而new/delete是C++独有的操作符。再强调一遍,一个是库函数,一个是操作符。
  • 区别二:对于非内部数据类型的对象而言,单个的malloc/free是无法满足动态对象的需求的。比如,对象想在创建的时候,同时执行自己的构造函数,对象在析构的同时,想自动执行自己的析构函数,malloc/free是没法满足的。而new/delete却可以!因为后者是运算符,编译器可以直接定义运算符去将执行构造/析构函数的任务与其连接起来,但前者是库函数,并不在编译器的控制范围之内。

C语言中各自标准内存分配函数是如何使用的

malloc

是最常用的一种开辟内存空间的函数,其嗲用的形式为:

(类型*) malloc(size)

在内存的动态存储区中分配一块长度为‘size’字节的连续区域,返回该区域的首地址,但需要注意的是:此时,内存中的值没有初始化,只是个随机数。

free

调用形式为:

free(void *ptr);

指是否ptr所指向的一块内存空间。

calloc

调用形式为:

(类型*) calloc(n,size)

指在内存的动态存储区中分配n块长度为“size” 字节的连续区域,返回首地址,此时内存中的值都被初始化为0.

calloc与malloc的区别就是,前者是分配n块,后者是默认只分配1块。

realloc

调用形式为:

(类型*)realloc(*ptr,size);

将ptr内存大小增加到size那么大,新加的内存块没有初始化。

发布了278 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_17846375/article/details/104988598
今日推荐