1、函数声明

void *malloc(int size);

说明:malloc向系统申请分配size字节的内存空间,返回类型为void*类型。

2、使用

int *p;

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

注意:

(1)因为malloc返回的是不确定类型的指针,所以返回之前必须经过类型强制转换,否则编译报错,如:“ 不能将void*赋值给int*变量 ”。

(2)malloc只管分配内存,并不会初始化,其内存空间中的值可能是随机的。如果分配的这块空间原来没有被使用过,那么其中每个值都可能是0。相反,空间里面可能遗留各种各样的值。

(3)实参为需要分配的字节大小,如果malloc(1),那么系统只分配了1个字节的内存空间,这时注意,如果在这块空间中存放一个int值,由于int类型占4个字节,那么还有3个字节未分配空间,系统就会在已经分配的那1个字节的基础上,依次向后分配3个字节空间,而这就占有了“别人”的3个字节空间,“别人”原有的值就被清空了。

(4)分配的空间不再使用时,要用free函数释放这块内存空间。

3、示例

分配100个int类型的空间:

int *p;

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

4、malloc函数工作机制

(1)malloc函数被调用时,它会沿空闲链表寻找一个可以满足需求的内存块,然后把所需大小的内存块分配给用户,剩下的返回到链表上。free函数被调用时,它将释放的内存块连接到空闲链表上。

(2)到最后,空闲链表会被分成很多小的内存片段,当用户申请一块较大的内存空间时,空闲链表上可能没有满足需求的内存块了,这时,malloc函数请求延时,并将空闲链表内的小内存片段整理成大的内存块,最终返回。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linan5231/article/details/50930630

malloc函数用法相关推荐

  1. c语言malloc函数用法_小白对c语言数组的基础总结

    数组 数组是一系列相同类型元素有序的集合. 数组的定义: 一般形式为: 类型符 数组名 [常量表达式] 如 int a[5]; 表示数组有五个元素,a[0]-a[5],不存在元素a[5]. *注意: ...

  2. c语言 malloc 函数用法

    函数声明: Tips: void的字面意思是"无类型",void *则为"无类型指针",void *可以指向任何类型的数据. malloc 函数申请空间需要使用 ...

  3. c语言malloc函数用法_C语言内存模型!小本本记起来啊!

    一.C语言的内存分配模型 1.程序代码区:存放函数体的二进制代码. 2.全局区数据区:全局数据区划分为三个区域.全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全 ...

  4. C语言中 malloc函数用法

    #include <stdio.h> /* printf, scanf, NULL / #include <stdlib.h> / malloc, free, rand, sy ...

  5. C语言中malloc函数及free函数用法(定义动态数组及释放)

    一.关于静态数组.动态数组 二.malloc()和free()的基本概念以及基本用法 1.函数定义 2.函数用法 3.关于函数使用注意事项 三.malloc()函数分配内存空间的由来 四.malloc ...

  6. malloc函数的用法(超级白话版)

    malloc函数的用法 在这里,我不讲什么原理性的东西,我就单纯讲讲怎么用. 首先malloc()函数返回的是void *类型,所以用的时候要进行强制类型转换 malloc函数用完后,记得使用free ...

  7. c语言malloc用法 数组,详解C语言用malloc函数申请二维动态数组的实例

    详解C语言用malloc函数申请二维动态数组的实例 C语言在程序运行中动态的申请及释放内存十分方便,一维数组的申请及释放比较简单. Sample one #include int main() { c ...

  8. C语言malloc函数的功能及用法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站 点击跳转浏览. https://blog.csdn.net/qq_26501341/article/d ...

  9. malloc函数及memset函数用法详解

    最近在力扣刷题时,发现普通的创建数组很容易引起编译器报错. 而使用到动态内存分配malloc()函数和初始化函数memset()可以避免这类问题的发生.本文将详细介绍一下两个函数的 malloc() ...

  10. C语言学习:malloc()函数

    函数声明: void *malloc(size_t size) 头文件: #include <stdio.h> 函数描述: 分配所需的内存空间,并返回一个指向它的指针. 参数: size ...

最新文章

  1. docker 命令详解(cp篇)
  2. hdu 1043 ,pku 1077 Eight ,八数码问题
  3. Linux内核链表深度分析【转】
  4. 前端每日实战:142# 视频演示如何用 CSS 的 Grid 布局创作一枚小鸡邮票
  5. 牛客 - 字典序(思维)
  6. 数控车椭圆编程实例带图_数控车床任意位置椭圆宏程序编程,内附实例程序!...
  7. 为什么你应该尝试@reach/router
  8. 电脑屏保在哪里设置_手机屏保调成绿色能护眼?真的吗?
  9. linux安装typecho教程,Typecho上手指南
  10. ndarray.ravel([order]) 和 ndarray.flatten([order])
  11. 2021,我的年终总结......
  12. Etherpad配置及管理功能
  13. 【协议相关】一些可用的RTMP,HTTP等源
  14. 三星java游戏下载_轻松游戏 三星Z500安装java游戏详细教程
  15. 【Matlab代码】基于小波分析的音频信号的特征识别
  16. 手机kindle导入本地书_别再说不会用手机传书至Kindle了,方法都在这儿!
  17. 导纳矩阵 matlab,matlab实现导纳矩阵
  18. html给页面整体添加左右边距_左右边距相对于页面宽度过大
  19. 说说Pluma插件管理框架
  20. 小学计算机打字比赛教案,打字比赛活动方案

热门文章

  1. 《容器技术系列》一3.2 Docker Daemon的启动流程
  2. 问题:js中怎么继承属性
  3. 通过Git WebHooks+脚本实现自动更新发布代码之Shell脚本(二)
  4. UIButton 文字图片排列
  5. 传输信道加密Stunnel配置
  6. iOS Crash文件的解析
  7. 让图片左右缓慢移动的MoveView
  8. C# Sqlite For WP7
  9. Fiddler工具使用介绍三
  10. Python_代码练习_写一个判断是否为小数的函数