申请动态内存——malloc()函数及其扩展函数

本文介绍了动态内存管理的相关函数,包括malloc()的使用和内存泄露的检查工具VLD,calloc()的初始化功能,realloc()的内存扩容与缩容操作,以及free()在释放内存时的重要性。讲解了内存分配结构以及free()如何读取长度信息,并探讨了释放失败的原因。

1.malloc()概述——申请动态内存

malloc(num)向系统申请num字节的动态内存,内存于“堆”里存放,若申请成功,则函数返回(无类型)数组的首地址,失败则返回NULL,并且申请之后的内存中并没有初始化。该函数需要引用头文件——stdlib.h。
由于“堆”有一个特性——由程序自行管理内存,所以在申请了动态内存之后,需要利用free()自行释放,这是为了避免出现野指针,并且把指向这块内存的指针指向NULL,防止之后的程序再用到这个指针。如果不自行释放的话,就会造成内存泄露——可用内存越来越少,设备速度越来越慢。
检验是否出现内存泄露的工具VLD,下载、配置好之后只需要在程序中加上头文件——vld.h,在调试状态下的输出栏就可以知道是否发生内存泄露。

2.malloc() 代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int *p = (int *)malloc( sizeof(int)*10 );//申请了40个字节的动态内存

    for(int i=0; i<10; i++)
    {
        p[i] = i;
    }

    for(int i=0; i<10; i++)
    {
        printf("%d\n",p[i]);
    }

    free(p);
    p = NULL://防止后面的程序再用到
    return 0;
}

声明为:void* malloc(unsigne

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值