C语言动态内存管理和动态内存分配

2019-07-2916:42:03编程语言入门到精通Comments2,232 views字数 625阅读模式

动态内存管理同时还具有一个优点:当程序在具有更多内存的系统上需要处理更多数据时,不需要重写程序。标准库提供以下四个函数用于动态内存管理:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/14500.html

(1) malloc()、calloc()
分配新的内存区域。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/14500.html

(2) realloc()
调整已分配的内存区域。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/14500.html

(3) free()
释放已分配的内存区域。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/14500.html

上述所有函数都声明在头文件 stdlib.h 中。对象在内存中所占空间的大小是以字节数量为单位计算的。许多头文件(包括 stdlib.h)专门定义了类型 size_t 用来保存这种内存空间的相关信息。例如,sizeof 运算符以类型 size_t 返回字节数量。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/14500.html

动态内存分配

两个内存分配函数 malloc()和 calloc()的参数不一样:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/14500.html

void*malloc(size_t size);

函数 malloc()分配连续的内存区域,其大小不小于 size。当程序通过 malloc()获得内存区域时,内存中的内容尚未决定。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/14500.html

void*calloc(size_t count,size_t size);

函数 calloc()分配一块内存区域,其大小至少是 count_size。换句话说,上述语句分配的空间应足够容纳一个具有 count 个元素的数组,每个元素占用 size 个字节。而且,calloc()会把内存中每个字节都初始化为 0。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/14500.html

两个函数都返回 void 指针,这种指针被称为无类型指针(typeless pointer)。返回指针的值是所分配内存区域中第一个字节的地址,当分配内存失败时,返回空指针。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/14500.html

作者:周梦康文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/14500.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/14500.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定