动态内存管理同时还具有一个优点:当程序在具有更多内存的系统上需要处理更多数据时,不需要重写程序。标准库提供以下四个函数用于动态内存管理:

(1) malloc()、calloc()

分配新的内存区域。

(2) realloc()

调整已分配的内存区域。

(3) free()

释放已分配的内存区域。

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

动态内存分配

两个内存分配函数 malloc()和 calloc()的参数不一样:

void*malloc(size_t size);

函数 malloc()分配连续的内存区域,其大小不小于 size。当程序通过 malloc()获得内存区域时,内存中的内容尚未决定。

void*calloc(size_t count,size_t size);

函数 calloc()分配一块内存区域,其大小至少是 count_size。换句话说,上述语句分配的空间应足够容纳一个具有 count 个元素的数组,每个元素占用 size 个字节。而且,calloc()会把内存中每个字节都初始化为 0。

两个函数都返回 void 指针,这种指针被称为无类型指针(typeless pointer)。返回指针的值是所分配内存区域中第一个字节的地址,当分配内存失败时,返回空指针。

原文链接

本文为云栖社区原创内容,未经允许不得转载。

C语言与JAVA内存管理_C语言动态内存管理和动态内存分配相关推荐

  1. C语言与Java怎么沟通_c语言初学指针,对于java面向对象的初理解

    最近在看关于c语言的指针,学习下,发现指针原来运用理解成其实可以抽象出我们java的面向对象封装,地址--> 对象或变量,先看一段代码: public class Cat { public St ...

  2. c语言 python-C语言、Java语言和python语言的区别在哪里

    原标题:C语言.Java语言和python语言的区别在哪里 我们经常听到C语言.Java语言和python语言,那么这三者的区别在哪里呢?随着科技的进步以及新技术的推进,编程语言的种类也是越来越多,随 ...

  3. python和c语言的区别-C语言、Java语言和python语言的区别在哪里

    原标题:C语言.Java语言和python语言的区别在哪里 我们经常听到C语言.Java语言和python语言,那么这三者的区别在哪里呢?随着科技的进步以及新技术的推进,编程语言的种类也是越来越多,随 ...

  4. C语言与JAVA内存管理_C语言内存管理

    本章将介绍C语言动态内存管理. C语言编程语言提供了多种功能的内存分配和管理.这些函数可以在头文件中找到. S.N. 函数与说明 1 void *calloc(int num, int size); ...

  5. java 函数表_C语言、Java语言的符号表区别和特点是什么?分别是如和处理函数参数的?...

    1.语法类似: 由于Java可以算是从C 发展而来的,因此Java与C语言的语法比较类似 2.编程的熟练程度就是对语言程序库的掌握程度: 从某种程度上来说,编程语言都是由语法和相应的程序库所构成,Ja ...

  6. c程序设计语言 qsort,【程序设计基础_C语言】北理工的恶龙(附qsort范例)

    [程序设计基础_C语言]北理工的恶龙(附qsort实例) 北理工的恶龙(附qsort实例) 背景:最近,北理工出现了一只恶龙,它长着很多 头,而且还会吐火,它将会把北理工烧成废墟, 于是,校长下令召集 ...

  7. vc 运行c语言步骤,第1章_C语言概述(vc++环境如何运行c语言程序)[精选].ppt

    第1章_C语言概述(vc环境如何运行c语言程序)[精选] C语言程序设计 授课对象:电子商务06 时间安排: 理论课(1-9周): 星期一 5-6节 9407D 星期三 5-6节 9410D 实验课( ...

  8. c语言最小点对问题_C语言教程(一):程序开发理论基础!

    前言: 1.本系列教程适用于刚开始学习 C 语言的同学,或者初级开发者,或者想系统详细了解 C 语言的小伙伴. 2.本系列教程会从C语言基础到 C 语言高级语法,包含 C 语言所有系列. C语言简介 ...

  9. c语言float二进制输出代码_C语言学习笔记——学前知识概述

    将我大一学习C语言时做的笔记拿来与大家分享,内容比较浅显,比较适合初学者,如有错误还请见谅,提出改正,谢谢! 前言:此C语言笔记是本人在自学时记录的一些重点或初学者常犯的错误,希望我的这本笔记能够对大 ...

最新文章

  1. 如何成为一名成功的 iOS 程序员?
  2. 官方抓虫,PyTorch 新版本修复 13 项 Bug
  3. RAC8——scan ip的理解
  4. 慢保刚办下来如何使用_在科目二离合和方向没学好的学员如何备考科目三?
  5. C#中UDP通信过程中出现:远程主机强迫关闭了一个现有的连接0x80004005】的解决方法
  6. 干货 | Elasticsearch7.X Scripting脚本使用详解
  7. POJ2828 Buy Ticket
  8. html判断坐标,js判断鼠标位置是否在某个div中的方法
  9. android 坐标绘图 缩放,在缩放/缩小或拖放到Android后获取画布坐标
  10. Think in Java第四版 读书笔记10 第16章 数组
  11. Spring面试之bean作用域
  12. 关于头文件的一道选择题
  13. Maven配置文件无法被导出或者生效的问题【已解决】
  14. HDU1232 畅通工程【并查集】
  15. java方法_Java方法
  16. Log4jx 2.9 后支持进程号输出
  17. Glide 4.x工作总体执行流程概述
  18. python的wget用法介绍_Python使用wget实现下载网络文件功能示例
  19. python的scipy库无法使用_scipy库内存错误
  20. opencv 切取红色

热门文章

  1. mysql for oracle_模块与包 Mysql与Oracle区别
  2. apollo配置中心搭建
  3. git学习-pull命令
  4. 测试工程师因迟到和人事大吵一架,结果人事被开除
  5. centos 6.2安装mysql_centos6.2安装mysql
  6. c#连接远程sqlserver2008_利用远程调试工具调试mitmproxy和fiddlercore
  7. PAT甲级1115 DFS和BST
  8. mysql自动备份工具 linux_自动备份MYSQL方法 (Linux)
  9. lombok slfj 中_lombok @Slf4j注解
  10. oracle裸设备文件复制,Oracle Goldengate在HP平台裸设备文件系统OGG-01028处理