C语言—常见的内存分配函数

用C语言编写的程序在内存中运行时,内存被分配为5个区:

1堆区。动态分配内存区,即程序运行时被用户申请的空间,而非程序自身分配的内存;2栈区。用来存放程序运行时的局部变量;

3ESS段。存放未被完全初始化的全局变量和静态变量。4数据区。存放完全初始化的全局变量和静态变量,字符串。

5代码区。编译后的代码。

当用户遇到需要临时申请内存空间时,可以使用内存分配函数malloc(),calloc(),realloc()。它们的使用方式及作用如下:

1void * malloc(num);num为内存段长度,如malloc(100)表示申请一段长度为100字节的内存长度;

2void * calloc(count,num);count表示申请的内存段个数,num表示每个内存段的长度,如calloc(4,sizeof(int))表示申请4段长度为int(4)个字节的内存长度;

3void * realloc(p,num);p表示内存首地址,num表示内存长度,如char *p = ''abc';realloc(p,10);表示在首地址为p的内存处开辟一段长度为10的内存空间,当原来的p地址处后面的空白内存不够10个长度的时候,系统就会开辟新的长度为10的内存空间,原来的字符串abc也会被移动到新的内存空间处。

下面是一个关于内存分配函数的应用

#include <stdio.h>

//常见内存分配函数的应用
#include <stdlib.h>
char * ch()
{
    char *p = (char *)malloc(100);
    if(p != NULL )//申请长度为100的内存空间
    {
        p = (char *)malloc(100);
        p = "abc";
    }
    return p;
}
int main(int argc, char* argv[])
{
    char *p = ch();
    printf("%s\n",p);
    return 0;
    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值