free和malloc的用法

来源:互联网 发布:pdf合并软件在线 编辑:程序博客网 时间:2024/05/16 14:17

free函数的用法 C语言提供的库函数:
  原型: void free(void *ptr)
  功 能: 释放已分配的块
  程序例:
  #include <string.h>
  #include <stdio.h>#include <malloc.h>
  int main(void)
  {
  char *str;
  /* allocate memory for string */
  str = malloc(10);
  /* copy "Hello" to string */
  strcpy(str, "Hello");
  /* display string */
  printf("String is %s\n", str);
  /* free memory */
  free(str);
  return 0;

  }

>>>>>>>free释放的只是它所值向的目标,而不能释放它本身


>>>>>>>malloc()是在堆空间分配内存,不需这块内存时用free()释放。 切记,堆上分配的内存不会自动释放!
比如:
//分配10个字节的空间,记得保存返回地址,以免造成内存垃圾不能回收
//必要时还要判断malloc函数返回值是否为NULL
char *buf = (char *)malloc(10);

//使用已分配的这10个字节空间
... ...

//使用完后记得释放,杜绝内存泄露
free(buf); malloc()是在堆空间分配内存,不需这块内存时用free()释放。 切记,堆上分配的内存不会自动释放!
比如:
//分配10个字节的空间,记得保存返回地址,以免造成内存垃圾不能回收
//必要时还要判断malloc函数返回值是否为NULL
char *buf = (char *)malloc(10);

//使用已分配的这10个字节空间
... ...

//使用完后记得释放,杜绝内存泄露
free(buf);

malloc()函数

#incluce<stdlib.h>

void *malloc(unsigned int size);

功能:在内存的动态存储区分配一个长度为size字节的连续空间,函数返回的是一个指向分配域起始地址的指针,这个指针的类型是void型。如果函数未能执行成功则返回一个空指针NULL。使用这个函数必须包含头文件stdlib.h。

free()函数

#include<stdlib.h>

void free(void *p);

功能:释放由p所指向的内存区,使这部分内存归还给系统。p是调用malloc函数的返回值。free函数无返回值。

 

malloc()与free()必须成对出现,使用malloc分配了一块内存,使用完毕后必须使用free函数将其释放。

 

例子:实现把一个字符串倒序。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
 char  *src = "hello world";
 char *dest = NULL;
 int  len = strlen(src);
 
 dest = (char *)malloc(len+1);                        // 申请len+1长度的内存空间
 char *d = dest;
 char *s = &src[len-1 ];
 
  while(len--!=0)
   *d++ = *s--;
 d = '\0';
 
 printf("%s\n",dest);
 free(dest);                                                    //释放空间,dest为malloc的返回值                                              
 
 return 0;
}

 

0 0
原创粉丝点击