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

来源:互联网 发布:添加网络背景音乐 编辑:程序博客网 时间:2024/04/29 17:44

------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;

}








0 0
原创粉丝点击