详解C语言中free()函数与getpagesize()函数的使用

 更新时间:2015年08月26日 16:46:55   投稿:goldensun  
这篇文章主要介绍了详解C语言中free()函数与getpagesize()函数的使用,是C语言入门学习中的基础知识,需要的朋友可以参考下

C语言free()函数:释放动态分配的内存空间
头文件:

#include <stdlib.h>

free() 函数用来释放动态分配的内存空间,其原型为:

 void free (void* ptr);

free() 可以释放由 malloc()、calloc()、realloc() 分配的内存空间,以便其他程序再次使用。

【参数说明】ptr 为将要释放的内存空间的地址。

free() 只能释放动态分配的内存空间,并不能释放任意的内存。下面的写法是错误的:

int a[10];
// ...
free(a);

如果 ptr 所指向的内存空间不是由上面的三个函数所分配的,或者已被释放,那么调用 free() 会有无法预知的情况发生。

如果 ptr 为 NULL,那么 free() 不会有任何作用。

注意:free() 不会改变 ptr 变量本身的值,调用 free() 后它仍然会指向相同的内存空间,但是此时该内存已无效,不能被使用。所以建议将 ptr 的值设置为 NULL,例如:

free(ptr);
ptr = NULL;

代码示例:

#include <stdlib.h>
int main ()
{
 int * buffer1, * buffer2, * buffer3;
 buffer1 = (int*) malloc (100*sizeof(int));
 buffer2 = (int*) calloc (100,sizeof(int));
 buffer3 = (int*) realloc (buffer2,500*sizeof(int));
 free (buffer1);
 free (buffer3);
 system("pause");
 return 0;
}

C语言getpagesize()函数:取得内存分页大小
头文件:

#include <unistd.h>

定义函数:

size_t getpagesize(void);

函数说明:返回一分页的大小,单位为字节(byte)。此为系统的分页大小,不一定会和硬件分页大小相同。

返回值:内存分页大小。

附加说明:在 Intel x86 上其返回值应为4096bytes。

范例

#include <unistd.h>
main(){
 printf("page size = %d\n", getpagesize());
}

相关文章

  • C++实现LeetCode(26.有序数组中去除重复项)

    C++实现LeetCode(26.有序数组中去除重复项)

    这篇文章主要介绍了C++实现LeetCode(26.有序数组中去除重复项),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • Qt实现TCP客户端和服务器通讯程序

    Qt实现TCP客户端和服务器通讯程序

    这篇文章主要为大家详细介绍了Qt实现TCP客户端和服务器通讯程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • C语言中scanf的用法举例

    C语言中scanf的用法举例

    本节介绍输入函数 scanf 的用法,scanf 和 printf 一样,非常重要,而且用得非常多,所以一定要掌握,这篇文章主要介绍了C++中scanf的用法举例,需要的朋友可以参考下
    2022-11-11
  • QT生成随机验证码的方法

    QT生成随机验证码的方法

    这篇文章主要为大家详细介绍了QT生成随机验证码的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • VS2017开发C语言出现“no_init_all“的解决办法

    VS2017开发C语言出现“no_init_all“的解决办法

    这篇文章介绍了VS2017开发C语言出现“no_init_all“的解决办法,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • VSCODE+cmake配置C++开发环境的实现步骤

    VSCODE+cmake配置C++开发环境的实现步骤

    这篇文章主要介绍了VSCODE+cmake配置C++开发环境的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • c语言阶乘之和问题示例详解

    c语言阶乘之和问题示例详解

    这篇文章主要给大家介绍了关于c语言阶乘之和问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用c语言具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • C++画正弦线实例代码

    C++画正弦线实例代码

    这篇文章主要介绍了C++画正弦线实例代码,是C++图形操作程序设计中比较常见的一个技巧,需要的朋友可以参考下
    2014-10-10
  • 利用Qt实现可扩展对话框的示例代码

    利用Qt实现可扩展对话框的示例代码

    可扩展对话框通常用于用户对界面有不同要求的场合。当供高级用户使用或需要更多信息时,可通过某种方式的切换显示完整对话窗体(扩展窗体)。本文将用Qt实现可扩展对话框,需要的可以参考一下
    2022-06-06
  • C++ 智能指针代码解析

    C++ 智能指针代码解析

    这篇文章主要介绍了c++ 智能指针基础的相关资料,帮助大家更好的理解和学习使用c++,感兴趣的朋友可以了解下,希望能给你带来帮助
    2021-10-10

最新评论