malloc new
来源:互联网 发布:p2p网络协议 编辑:程序博客网 时间:2024/05/16 06:45
原型:extern void *malloc(unsigned int num_bytes)
头文件:#include <malloc.h> 或 #include <alloc.h> (注意:alloc.h 与 malloc.h 的内容是完全一致的。)
功能:分配长度为num_bytes字节的内存块
说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
当内存不再使用时,应使用free()函数将内存块释放。
举例:
#include<iostream>#include<malloc.h>int main(){char *p;p=(char *)malloc(100);if(p){printf("Memory Allocated at:%x\n",p);}else{printf("Not Enough Memory!\n");}free(p);return 0;}
malloc:
malloc分配的内存大小至少为size参数所指定的字节数
malloc的返回值是一个指针,指向一段可用内存的起始地址
多次调用malloc所分配的地址不能有重叠部分,除非某次malloc所分配的地址被释放掉
malloc应该尽快完成内存分配并返回(不能使用NP-hard的内存分配算法)
实现malloc时应同时实现内存大小调整和内存释放函数(realloc和free)
malloc和free函数是配对的,如果申请后不释放就是内存泄露;如果无故释放那就是什么都没有做,释放只能释放一次,如果释放两次及两次以上会出现错误(但是释放空指针例外,释放空指针其实也等于什么都没有做,所以,释放多少次都是可以的)
malloc和new
new返回指定类型的指针,并且可以自动计算所需要的大小。int *p;p=new int;//返回类型为int*类型 ,分配的大小为sizeof(int) p=new int[100];//返回类型为int*类型,分配的大小为sizeof(int)*100
int *p;p=(int *)malloc(sizeof(int));
2,malloc的实参是sizeof(int),用于指明一个整形数据需要的大小,如果我们写成:
p = (int *)malloc(1), 那么可以看出:只是申请了一个字节的空间,如果向里面存放了一个整数的话,将会占用额外的3
个字节,可能会改变原有内存空间中的数据
3,malloc只管分配内存,并不能对其进行初始化,所以得到的一片新内存中,其值将是随机的。一般意义上:我们习惯性的将其初始化为NULL。当然,也可以用memset函数的。
简单的说:
malloc 函数其实就是在内存中:找一片指定大小的空间,然后将这个空间的首地址给一个指针变量,这里的指针变量可以是一个单独的指针,也可以是一个数组的首地址, 这要看malloc函数中参数size的具体内容。我们这里malloc分配的内存空间在逻辑上是连续的,而在物理上可以不连续。我们作为程序员,关注的 是逻辑上的连续,其它的,操作系统会帮着我们处理的。
- new & malloc()
- malloc/new
- new & malloc
- new malloc
- new/malloc
- malloc && new
- New Malloc
- new malloc
- malloc new
- malloc以及malloc和new
- malloc new 和 opeartor new
- new,malloc和::operator new
- malloc和new区别
- new Vs malloc
- malloc and new
- malloc和new区别
- new 和 malloc
- malloc与new
- JIRA配置本地MYSQL数据库
- 三大电商联手数十品牌再创亿人关注焦点:30日vivo X7发布
- spring获取bean的几种方法
- zookeeper学习笔记
- Android点亮屏幕
- malloc new
- ARM学习笔记---中断
- 悟空遥控——会否成为电视交互领域亿级用户工具?
- BZOJ1086(SCOI2005)[王室联邦]--树分块
- 黑科技涌现 CVPR 2016这是要火的节奏
- Netflix OSS、Spring Cloud还是Kubernetes? 都要吧!
- linux下mysql修改root密码
- python中的闭包,函数
- JVM相关概念和异常类型