您的当前位置:首页正文

c语言free函数的作用,c语言中free函数的理解

2024-11-07 来源:个人技术集锦

最近在复习c语言的时候再次用到了malloc函数和free函数,此处着讲解一下自己对这两个函数的理解和认识。

一. malloc函数和free函数的基本概念和基本的用法

对于malloc函数:

1.包含的头文件: 或者

2. 函数的原型:void *malloc(unsigned int NumBytes);

3. 函数功能: 该函数分配了NumBytes个字节的内存空间,如果成功,则返回指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)(分配失败的原因往往有多种,例如内存空间不足)。

对于free函数:

1.包含的头文件:同malloc函数

2.函数原型 void free(void *ptr);

该函数无返回值。

3.函数功能:该函数通常与malloc在一起使用,用于释放malloc函数分配的内存空间。

函数用法示例:

#include

#include

int main()

{

int *p;

int i = 2;

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

if(p)

{

}

else

{

printf("分配失败!");

}

free(p);

}

二.更具体的解释

#include

#include

int main()

{

int *p;

int i = 2;

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

if(p)

{

free(p);

}

}

1.free只是释放了malloc所申请的内存,并不改变指针的值;

2.由于指针所指向的内存已经被释放,所以其它代码有机会改写其中的内容,相当于该指针从此指向了自己无法控制的地方,也称为野指针;

3.为了避免失误,最好在free之后,将指针指向NULL。

4.malloc后必须free,否则会造成内存泄漏。

最后,对于由malloc函数分配空间的变量,它们往往存储在堆里,而不是栈中,这点要注意。malloc申请的内存空间,也是从堆中申请,这样申请后的指针,就指向了堆中的某块内存。

原文:http://www.cnblogs.com/wangkundentisy/p/6002448.html

显示全文