函数声明:

void *malloc(size_t size)

头文件:

#include <stdio.h>

函数描述:

  • 分配所需的内存空间,并返回一个指向它的指针。

参数:

  • size – 内存块的大小,以字节为单位。

返回值:

  • 该函数返回一个指针 ,指向已分配大小的内存。如果请求失败,则返回 NULL。

实例:

下面的实例演示了 malloc() 函数的用法。

#include <stdio.h>
#include <stdlib.h>void update_value(int* p){*p = 100;
}int main()
{//在栈上面分配变量a 占4个字节int a = 10;//申请类型是int内存空间;占4个字节;p指针指向该4个字节的内存空间        int *p = (int*)malloc(sizeof(int));//p变量也占4字节;所以sizeof(p)=8个字节//赋值p只指向的动态空间为50*p = 50;printf("p->value=%d &p=%p sizeof(*p)=%ld, sizeof(p)=%ld sizeof(a)=%ld \n", *p, p, sizeof(*p), sizeof(p),sizeof(a));free(p);//修改p指向的内存中的数据printf("p->value=%d &p=%p sizeof(*p)=%ld, sizeof(p)=%ld sizeof(a)=%ld \n", *p, p, sizeof(*p), sizeof(p),sizeof(a));update_value(p);printf("p->value=%d &p=%p sizeof(*p)=%ld, sizeof(p)=%ld sizeof(a)=%ld \n", *p, p, sizeof(*p), sizeof(p),sizeof(a));return(0);
}

注:当内存不再使用的时候,应使用free()函数将内存块释放掉。

void*:表示未确定类型的指针,C/C++规定void*可以强转为任何其他类型的指针,关于void还有一种说法就是其他任何类型都可以直接赋值给它,无需进行强转,但是反过来不可以。

malloc:分配的内存大小至少为参数所指定的字节数。

malloc的返回值是一个指针,指向一段可用内存的起始位置,指向一段可用内存的起始地址,多次调用malloc所分配的地址不能有重叠部分,除非某次malloc所分配的地址被释放掉malloc应该尽快完成内存分配并返回(不能使用NP-hard的内存分配算法)实现malloc时应同时实现内存大小调整和内存释放函数(realloc和free)

mallocfree是配对的,如果申请后不释放就是内存泄露,如果无故释放那就是什么也没做,释放只能释放一次,如果一块空间释放两次或者两次以上会出现错误(但是释放空指针例外,释放空指针也等于什么也没做,所以释放多少次都是可以的。)

C语言学习:malloc()函数相关推荐

  1. 黑马程序员——c语言学习心得——函数传递二维数组

    黑马程序员--c语言学习心得--函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.    变量 ...

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

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

  3. c语言:malloc函数的简介

    文章目录 一.为什么需要malloc函数? 二.如何使用malloc函数? 三.用malloc函数自定义数组长度 一.为什么需要malloc函数? 用于解决传统数组以下缺点. ①传统数组的长度必须要事 ...

  4. 函数的返回值可以不用赋值_C语言学习|函数的应用《一》

    C语言为程序的结构提供了函数和模块 一.函数的定义与使用 <编程之道>中写道:"一个程序应该是灵活自由的.它的子过程就像串在一根线子上的珍珠."子过程在C语言中被称为& ...

  5. C语言学习笔记--函数

    1. C 语言中的函数 (1)函数的由来: 程序 = 数据 + 算法→C 程序 = 数据 + 函数 (2)模块化程序设计 (3)C 语言中的模块 2. 面向过程的程序设计 (1)面向过程是一种以过程为 ...

  6. 关于C语言的malloc函数以及内存泄漏的问题

    malloc函数 malloc函数的原型: (void *)malloc(int size) malloc函数的返回值是一个void类型的指针,参数为int类型的数据,即申请分配的内存大小,单位是字节 ...

  7. c语言之 malloc函数详解 在堆中动态分配内存malloc和new的区别

    一.原型:extern void *malloc(unsigned int num_bytes); 头文件:#include <malloc.h> 或 #include <alloc ...

  8. C语言学习笔记--函数与指针

    1. 函数类型 (1)C 语言中的函数有自己特定的类型,这个类型由返回值.参数类型和参数个数共同决定.如 int add(int i,int j)的类型为 int(int,int). (2)C 语言中 ...

  9. c语言的malloc函数为什么会出现没有定义,屡次使用malloc函数为什么不行

    多次使用malloc函数为什么不行? 编了一个程序, 其中要用到很多很多数组来进行大型的矩阵计算(使用分治法递归实现,所以中间数据特别多). 定义成静态数组已经不够用了(经测试只能支持到几百*几百的数 ...

  10. c语言学习--关于函数的参数传递(汇编和可执行文件)

    簇: 数据存储在硬盘的时候都是以簇位单位,所以无论文件大小是多少,除非正好是簇大小的倍数,否则文件所占用的最后一个簇或多或少都会产生一些剩余的空间,且这些空间又不能给其它文件使用,即使这个文件只有0字 ...

最新文章

  1. mac os 系统密码正确的 但是进不了系统
  2. PMCAFF | 别学东学西了,先建立自己的知识体系吧
  3. 开源大数据周刊-第15期
  4. 【计算机网络】物理层传输介质
  5. Linux操作Oracle(10)——plsql配置Oracle客户端方法【Oracle客户端安装、资源下载】详细教程
  6. Two Bases CodeForces - 602A (BigInteger c++long long也可以)
  7. 三大技术要素为互联网金融2.0保驾护航
  8. 匿名对象和类名为数据类型(java)
  9. DirEqual for Mac(文件夹快速比较工具)
  10. TaskPaper教程——如何安装运行脚本?
  11. 国军标要求的产品“六性”到底是什么?
  12. 批处理重置IE、批处理清理浏览器缓存、默认以管理员权限运行批处理
  13. WinDbg 定位句柄泄漏问题
  14. vue3学习笔记一:createApp, ref, reactive, onMounted,computed
  15. Android 启动过程介绍
  16. [Java练习] 学生查询系统
  17. RedisTemplate设置redis的key时出现\xac\xed\x00\x05t\x00\x0f前缀
  18. word文档变成0字节_如何恢复0字节的word文档【五个步骤免费恢复】
  19. day10-字符串作业-复写
  20. 快速入门JAVA单元测试——mock

热门文章

  1. Apsara Clouder专项技能认证:实现调用API接口
  2. 怎么抓取屏幕截图计算机考试时间,定时抓屏快照(电脑截屏工具)V4.8 最新版
  3. LeetCode每日打卡 - 汉明距离总和
  4. MySql 、Oracle 获取表结构和字段信息
  5. 【HRBUST - 1623】Relation(思维模拟,拆解字符串)
  6. 【HDU - 6185】Covering(矩阵快速幂优化二维dp,高斯消元,轮廓线dp打表)
  7. 【POJ - 2533】Longest Ordered Subsequence(四种方法解决最长上升子序列 含二分优化版本)
  8. 吴恩达机器学习作业(4):正则化逻辑回归
  9. div内容居中和布局居中样式总结
  10. Java基础部分快速复习(以前复习的时候放在自己的新浪博客上)