随手记1

1、malloc()和free()

void * malloc(long NumBytes); //从堆的链表中上分配NumBytes个字节的内存

@return:分配成功则返回指向该内存块的指针;分配失败则返回一个空值(NULL)

   分配失败的原因:内存不足(一般不可能);当前malloc试图分配一块被破坏的内存,即当前malloc之前可能存在指针越界。


void free(void *pAlloc);//将之前用malloc/cealloc等分配的控件还给操作系统,将这块内存加入到堆链表中,可重新被分配。


2、realloc

void *realloc(void *ptr,     size_t     new_size);//ptr:Pointer to previously allocated memory block.(指向原内存块的指针); new_size:New size in bytes(新的内存大小)

@return:NULL:new_size为0且有足够空间待扩展;new_size不为0但没有足够的待扩展空间;

                   ptr:返回原指针(原指针指向的内存之后有空间待扩展)

   new_ptr:返回新指针(重新找一块内存分配给新指针,将原内存块的内容拷贝到新内存中,并free掉原内存块)


realloc经常会遇到失败的情况:多半原因是由于待扩展指针在使用时出现越界情况!


注:以上内容为本人实际应用中总结,如有不妥之处,烦请指出!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值