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