内存分配函数

来源:互联网 发布:淘宝直通车的规则 编辑:程序博客网 时间:2024/06/04 01:08

1.内存分区,内存地址从低到高排列:代码区、常量区、静态区、堆区、栈区。

2.c中提供堆区供给开发者分配内存空间,动态内存分配函数malloc,calloc,realloc

  (1)malloc函数的使用,原型为void *malloc(int length)参数为分配内存空间的大小:

   //将内存分配4个字节给一个int型指针

  //返回值为任何指针

  //考虑到不同平台,可以使用sizeof(char)来确定一个字节

     int *p = malloc(4);

     *p = 4;

    //要开辟一块 内存空间,首先要明白开发这块内存空间要干什么事情

    //malloc函数   的内存的分配不负责清空内容

     char *str = malloc(sizeof(char) * 8);

     strcpy(str, "xiansen");

     int *array = malloc(sizeof(int) * 6);

    //对内存的释放

//无返回值,有一个参数,任意类型的指针

//释放内存只是对内存标记为可用,并没有对内存进行清空

     free(p);

     free(str);

     free(array);

 (2)calloc与realloc函数

//calloc函数在奉陪内存的时候清空所有内容效率略低

 //参数1:分配多少内存//    参数2:每个内存多大//   char *str= calloc(2, sizeof(char));//    从新分配内存大小//    参数1:给谁分配//    参数2:重新分配大小//    printf("%p\n", str);//    str =  realloc(str, 100);
3.内存操作函数

初始化内存:void *memset(void *s , int c , size_t n) //从s地址指向的内存开始初始化n个字节的内容为c;

拷贝内存:void *memcpy(void *dest,const void*source , size_t n) //从source指向的地址开始拷贝到dest拷贝n个字节;

内存比较:int memcmp(const void *buf1, const void*buf2, unsigned int count) 比较buf1,buf2的内存是否相同,比较count个字节;



0 0
原创粉丝点击