(zz)浅谈malloc与calloc、realloc、new 的区别

malloccallocrealloc malloc 头文件:#include<stdlib.h> malloc()函数用来动态地分配内存空间,其原型为: void* malloc(size_t size);//size为需要分配的内存空间的大小,以字节(Byte)计。 【函数说明】malloc()在堆区分配一块指定大小的内存空间,用来存放数据。这块内存空间在函数执行完成后不会被初始化,它们的值时未知的。如果希望在分配内存的同时进行初始化,请使用calloc()函数。 【返回值】分配成功返回指向该内存的地址,失败则返回NULL。 由 阅读详情

相关函数原型:

1. Malloc

作 用:Malloc用于动态申请存储空间,它不是关键字,而是一个申请内存的函数

用 法:Malloc 返回一块内存地址的指针,否则会返回空指针null,这里要注意的是,当内存不再使用的时候,用free()函数进行对内存的释放。

2.calloc

作 用:calloc()函数有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小。

例 子:

3.realloc

作 用:重新分配内存空间。

例 子:

4.总结:

malloc: 动态分配size字节空间,返回它的指针。(此函数不能初始化内存空间)
calloc:动态分配n个连续的size字节空间,返回第一个指针。它有两个参数,分别为参数的数目,和每个参数的大小,那么这两个参数的乘积就是这个分配空间的大小。(此函数可以初始化内存空间)
realloc:将指针指向的内存空间扩展成n个,把它放在最后解释因为偶不建议使用,确实要用也要考虑多种情况。
free:释放上述两函数分配的空间;

 

malloc与new :

1 、new 建立的是一个对象,malloc 分配的是一块内存。
2、malloc申请的是heap区的内存空间,返回的是指针。new 建立的对象你可以把它当成一个普通的对象,用成员函数访问,不要直接访问它的地址空间。(注意用delete释放空间)。
3、malloc/free是C/C++中的方法(函数),new/delete是C++中的操作符。
4、使用free之前要判断,使其free的指针是!NULL的,使用delete则无须判断。
5、free掉的内存是该指针指向的一段内存空间,里面应该是空的。而delete掉的内存是里面确实存有数据或者对象的。

 

最后要注意的是malloc和free 、new和delete成对使用,以免不必要的麻烦。

Sharding Sphere JDBC使用Mybatis的saveBatch无法返回主键的问题 阅读详情

相关推荐

Centos 7 Linux 安装单机 Hadoop(HDFS):下载、安装、配置、测试

本文详细介绍了在 CentOS 7 系统上安装配置单机 Hadoop(HDFS)的完整流程,涵盖 JDK 环境准备、Hadoop 安装包下载部署、核心配置文件(core-site.xml、hdfs-site.xml 等)修改、SSH 免密登录设置、HDFS 格式化及服务启动,并通过命令行 Web 界面验证 HDFS 和 YARN 功能,适合 Hadoop 初学者快速搭建本地测试环境。

寒水馨 · 轻量级技术文档 · hanshuixin.org 3181

kmalloc文章()

在设备驱动程序中动态开辟内存,不是用malloc,而是kmalloc,或者用get_free_pages直接申请页。释放内存用的是kfree,或free_pages.   对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。  进程的4GB内存空间被人为的分为两个部分--用户空间

1328

微型计算机接口技术及应用课件(华中科技大学出版社)

微型计算机接口技术及应用课件(华中科技大学出版社)

浅谈malloc kmalloc、cmallocreallocnew区别

 作者:陶宁,华清远见嵌入式学院讲师。相关函数原型:1. Malloc 作 用: Malloc用于动态申请存储空间,它不是关键字,而是一个申请内存的函数用 法:Malloc 返回一块内存地址的指针,否则会返回空指针null,这里要注意的是,当内存不再使用的时候,用free()函数进行对内存的释放。2.calloc 作 用:calloc()函数有两个参数,分别

华清远见 | 程序员的学习天堂 1367

linux内存管理之malloc、kmalloc、kzalloc、vmalloc区别

1)用于申请内核空间的内存;2)内存以字节为单位进行分配;3)所分配的内存虚拟地址上连续;4)都是基于slab机制。

TyearLin的专栏 1156

malloc,vmalloc,kmalloc区别

1、kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存 2、kmalloc保证分配的内存在物理上是连续的,内存只有在要被DMA访问的时候才需要物理上连续,malloc和vmalloc保证的是在虚拟地址空间上的连续 3、kmalloc能分配的大小有限,vmallocmalloc能分配的大小相对较大 4、vmalloc比kmalloc要慢。尽管在某些情况下才需要...

lzzw的学习之路 2958

Kmalloc Vmalloc malloc区别

总的来说 kmalloc和vmalloc是分配内核的内存,malloc分配的是用户空间的内存。 kmalloc 保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续,malloc申请的内存不一定连续(用户空间存储以空间链表的方式组织(地址递增),每一个链表块包含一个长度、一个指向下一个链表块的指针以及一个指向自身的存储空间指针。) kmalloc能分配的大小有限,vmallocmalloc能分配的空间大小相对较大。 内存只有在要被DMA访问的时候才需要物理上连续。 vma

weixin_42005898的博客 3170

浅谈malloc callocreallocnew区别

写此文章,主要是让初学者,能够清楚的认识malloccallocreallocnew之间的区别相关函数原型: #include void *calloc(size_t nmemb, size_t size);void *malloc(size_t size);void free(void *ptr);void *realloc(void *pt

jianyun123的专栏 716

callocmallocrealloc函数的区别及用法

callocmallocrealloc函数的区别及用法! 三者都是分配内存,都是stdlib.h库里的函数,但是也存在一些差异。 (1)malloc函数。其原型void *malloc(unsigned int num_bytes); num_byte为要申请的空间大小,需要我们手动的去计算,如int *p = (int *)malloc......

魏波 7万+

callocreallocmalloc区别以及new

newmalloccallocreallocmalloc 是 C/C++ 中用于动态内存分配的函数。malloc 函数:malloc 函数用于在堆上分配指定大小的内存块。它接受一个参数,即所需内存块的字节数,返回一个指向分配内存的指针。如果分配失败,则返回 NULLcalloc 函数:calloc 函数类似于 malloc 函数,但它还会将分配的内存块初始化为零。它接受两个参数,即所需内存块的个数和每个内存块的字节数。它返回一个指向分配内存的指针。如果分配失败,则返回 NULL

华数云图小分队的博客 2110

malloc/calloc/realloc之间区别详述

1. malloc/calloc/realloc和free介绍: 1. malloc函数 malloc函数可以从堆上获得指定字节的内存空间,其函数声明如下: void * malloc(int n); 参数释义: n:申请空间大小(单个类型大小*总个数) 函数详述: 其中,形参n为要求分配的字节数。如果函数执行成功,malloc返回获得内存空间的首地址;如果函数执行失败,那么返回值为NULL。...

qq_38810767的博客 1万+

C++的malloccallocreallocnew区别

malloccallocreallocnew之间的区别

Serven的博客 1万+

malloccallocrealloc区别

函数来分配、初始化和重新分配内存。注意,在使用这些函数时,一定要检查返回值是否为。,以确保内存分配成功。另外,在不再需要内存时,应使用。函数来释放内存,以避免内存泄漏。这些示例展示了如何使用。

jingling122的博客 2150

malloc,realloc,calloc的用法及区别

首先,在gcc编译器下,我们先观察一下这几个函数的功能: 由此可以看出: 函数malloc() 在内存的动态存储区中分配一块长度为size字节的连续区域,参数size为需要内存空间的长度,返回该区域的首地址; 函数calloc() 参数size为申请地址的单元元素长度,nmemb为元素个数,即在内存中申请nmemb *size字节大小的连续地址空间; 函数realloc

xinianbuxiu的博客 6726

面试十三、malloccallocrealloc以及new区别

3.new操作符内存分配成功时,返回的是对象类型的指针,类型严格对象匹配,无须进行类型转换;void free(void *p) ,释放之前有调用 callocmallocrealloc 所分配的内存空间,*p指针指向一个要释放内存的内存块。2. 原地址空间没有连续的内存,则重新开辟一片空间,将数据拷贝到新空间,释放原空间,返回新地址指针(注意显式释放问题,引起二次释放的问题)(3) realloc 函数:在之前分配的内存块的基础上,将内存重新分配为更大或者更小的部分。

leimeili的博客 930

malloc realloc new calloc区别联系

http://www.xiaobaijidi.net/thread-103554-1-1.html #include<iostream> #include<iomanip> using namespace std; int main() { float (*cp)[9][8]=new float[8][9][8]; for(int i=0;i<8;i+...

Change_Improve的博客 528

malloc/calloc/realloc区别

一、malloc/calloc/reallloc和free的介绍 1.malloc函数 malloc函数可以从堆上火的指定字节的内存空间 函数声明: void* malloc(int n); 参数释义: n:申请空间大小 其中,形参n为要求分配的字节数。如果函数执行成功,malloc函数返回火的内存空间的首地址;如果函数执行失败,则返回值为NULL。 由于malloc函数值的类型为v...

Wuxin_20的博客 2115

alloc()malloc()calloc()realloc()区别及用法

C语言跟内存申请相关的函数主要有 alloca,calloc,malloc,free,realloc,sbrk等. 函数malloc()calloc()都可以用来动态分配内存空间,但两者稍有区别malloc()函数有一个参数,即要分配的内存空间的大小: void *malloc(size_t size); calloc()函数有两个参数,分别为元素的数目和每个...

qq_32619837的博客 9549

论C语言的malloc,calloc,new,realloc,alloca的机制和区别

最近笔试老是遇到关于C语言的malloc,new之类的内存机制问题,作为一个做java开发的程序员不免有些郁闷,驾驭不了。乘空闲下来的这些时间,好好整理下C语言中各个内存函数的简单机制,作用和区别。附录一道今年腾讯的笔试压轴题···

不给失败找借口,只给成功想办法 1666

new / malloc / calloc / realloc区别

new / malloc / calloc / realloc区别

challenglistic的博客 866
上一篇: chmod命令使用
下一篇: ffmpeg提取音频播放器总结
immember
博客等级 码龄18年 13粉丝 22原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值