******************* 常见的内存分配函数 *******************

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------



//  常见的内存分配函数

//

//  Created by 李佳乐 on 15-3-19.

//  Copyright (c) 2015 李佳乐. All rights reserved.

//


//******************* malloc--calloc--realloc ***************************




//动态内存分配,在内存的堆区分配


//动态内存分配函数介绍:

//注意:动态内存分配函数都在stdlib.h头文件中

// 1malloc,返回值是新申请的内存空间的首地址,如果失败返回的是NULL

// void * malloc(字节数)


// 2)calloc(n,size),可以在堆区中申请 n个,大小是size的空间

//   如果分配成功返回值是新申请的内存空间的首地址

//   如果失败返回的是NULL

//   calloc申请成功后,会自动初始化

// int a[10];


// 3)realloc

//   realloc(指针变量p,size)  把指针变量p所指向的内存空间的大小

//更改成size

//   注意:realloc 返回的是扩展后的空间的首地址

//

//    扩展的结果:

//        如果当前p相邻的空间有足够大得位置,扩展后空间的首地址不变

//        如果当前p相邻的空间没有足够大得位置,重新寻找一块足够大的空间,返回回来(把新空间的首地址返回)并且把原来空间的值拷贝过来


#include <stdio.h>

//引入头文件

#include <stdlib.h>


//malloc 函数的使用方法

//申请一个新的内存空间


void malloc1(){

    //3 个整数  1,10,100

    int *p = (int *) malloc(12);

    

    if(p!=NULL){

        //使用新申请的内存空间

        *p = 1 ;

        *p = 10;

        *p = 100;

    }

    

    for(int i = 0;i < 3;i++){

        printf("%d\t",*(p+i));

    }

}




//calloc的函数使用

//申请多个内存空间


void calloc1(){

    //申请10个大小为4的内存空间

    int *p = (int *)calloc(10, sizeof(int));

    

    if(p != NULL){

        //通过循环给内存空间赋值

        for(int i = 0;i<10;i++){

            *(p+i) = i;

        }

    }

    

    //查看内存空间的内容

    

    for(int i = 0;i <10;i++){

        printf("%d\n",*(p+i));

    }

}

int main(int argc, const char * argv[]) {

    

    int *P = malloc(4);

    *p = 1;

    printf("%p\n",p);

    

    p = (int *) realloc(p , 8);

    printf("%p\n",p);

    *(p+1) = 10;

    printf("%d,%d\n",*p,*(p+1));

    return 0;

}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值