关于malloc

malloc()函数是c语言标准库函数中的一个动态分配内存的函数

ANSI/ISO标准c中这个函数在在<malloc.h>头文件中,M$重新定义的标准库里这个函数是在名为<stdlib.h>的头文件中

函数原型:

void * malloc(size_t Size);

malloc这个函数返回一个指针,在指针类型上由于并不知道你要什么类型所以返回的是void*类型指针,void*表示未确定类型,而在c的标准里这种类型是可以强制转换为任意其他类型指针的;如果内存中没有足够大小或其他原因未能成功分配,那么malloc函数会返回一个NULL指针

malloc函数的参数列表中,size_t是标准c定义的一种与机器相关的无符号(unsigned)类型,通常你可能在某个头文件中找到它的定义,如在VS中的<crtdefs.h>你可以看到它被定义为

typedef unsigned int size_t;

也就是说size_t本质上就是一种无符号的整型,平时我们所使用的求类型长度的sizeof()函数的返回值就是size_t

虽然malloc为我们分配的内存是通过动态分配得到的,但是它的大小也是确定的,也就是说是不允许越界使用的

malloc这个函数是在堆内存中为我们分配空间的,它将操作系统栈内存中的可用空闲内存块地址链接成链表形式,在分配内存时遍历这个链表找到大小足够的内存分配给程序猿,然后把这块内存后的指针地址接到分配处(链表删除那么做,你懂的),在分配完所有大内存块没有足够大小的内存块分配时,malloc会整理内存将零碎空闲块合并成大块然后再分配给程序猿(当然也就是说物理上这个内存块不一定是连续的,对我们来说逻辑上是连续的也就够了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值