电子发烧友网 > 嵌入式技术 > 正文

嵌入式C语言中的动态内存管理和动态内存分配

2019年08月15日 17:16 次阅读

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

(1) malloc()、calloc()分配新的内存区域。

(2) realloc()调整已分配的内存区域。

(3) free()释放已分配的内存区域。

嵌入式C语言中的动态内存管理和动态内存分配

上述所有函数都声明在头文件 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)。返回指针的值是所分配内存区域中第一个字节的地址,当分配内存失败时,返回空指针。

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

C语言基础 之 第6章 函数

1 main函数回顾2 自定义函数1 之 函数定义3 自定义函数2 之 函数调用4 自定义函数3 之 传参和返回值5 使

发烧友学院 发表于 2018-12-09 00:00 2955次阅读
C语言基础 之 第6章 函数

void USART1_IRQHandler(void)叫做什么函数?

发表于 2019-08-16 04:35 40次阅读
void USART1_IRQHandler(void)叫做什么函数?

为什么ok6410会实现裸版程序的自更新功能?

发表于 2019-08-15 23:00 16次阅读
为什么ok6410会实现裸版程序的自更新功能?

如何在端点中等时使用xferdata()API调用?

发表于 2019-08-15 12:38 37次阅读
如何在端点中等时使用xferdata()API调用?

cyu3psibreadwriterequest函数限制该怎么解决?

发表于 2019-08-15 09:43 51次阅读
cyu3psibreadwriterequest函数限制该怎么解决?

在MDK中怎么设置才能让所有函数的函数名高亮显示?

发表于 2019-08-15 04:35 22次阅读
在MDK中怎么设置才能让所有函数的函数名高亮显示?

串口usart.c在哪里有调用到?

发表于 2019-08-15 04:35 27次阅读
串口usart.c在哪里有调用到?

为什么在主代码中没有使用的全局函数像其他的那样编译和链接?

发表于 2019-08-14 10:57 28次阅读
为什么在主代码中没有使用的全局函数像其他的那样编译和链接?

怎么从绘图或变换中提取特定数据点

发表于 2019-08-14 08:44 11次阅读
怎么从绘图或变换中提取特定数据点

为什么ucos一调用GUI_Init()就死机?

发表于 2019-08-14 03:02 44次阅读
为什么ucos一调用GUI_Init()就死机?

为什么这个UCOS多任务程序要过10几秒才进主界面?

发表于 2019-08-13 20:50 9次阅读
为什么这个UCOS多任务程序要过10几秒才进主界面?

嵌入式编程中计算机是如何存储小数的

浮点型在内存中的存储分布方式因机器平台而异,完全理解所有机器平台中的浮点型存储无疑是一件相当麻烦的事...

发表于 2019-07-29 14:22 82次阅读
嵌入式编程中计算机是如何存储小数的

嵌入式C语言的小技巧能够减少不少代码量

为了写出适应性更广的C语言程序,程序员考虑问题时应面面俱到。例如,在C语言程序中调用 open() ...

发表于 2019-07-14 11:03 328次阅读
嵌入式C语言的小技巧能够减少不少代码量

基于下界函数的最优化这样一种优化思路

在有些情况下,我们知道目标函数的表达形式,但因为目标函数形式复杂不方便对变量直接求导。这个时候可以尝...

发表于 2019-07-13 08:09 293次阅读
基于下界函数的最优化这样一种优化思路

Google AI最新研究用无监督数据增强推进半...

谷歌的结果促进了半监督学习的复兴,而且还发现3点有趣的现象:(1)SSL可以匹配甚至优于使用数量级更...

发表于 2019-07-13 07:31 391次阅读
Google AI最新研究用无监督数据增强推进半...

DeepMind最新研究通过函数正则化解决灾难性...

近年来,人们对持续学习(也称为终身学习)的兴趣再度兴起,这是指以在线方式从可能与不断增加的任务相关的...

发表于 2019-06-29 07:53 645次阅读
DeepMind最新研究通过函数正则化解决灾难性...

一款最新推出的语言:V

函数可以在声明之前使用:add和sub在main之后声明,但仍然可以从main调用。对于V中的所有声...

发表于 2019-06-29 07:47 997次阅读
一款最新推出的语言:V

Sallen和Key过滤器电路分压器及函数方程案...

Sallen-Key Filter拓扑用作构建块以实现更高阶的有源滤波器,Sallen和Key拓扑是...

发表于 2019-06-27 11:19 249次阅读
Sallen和Key过滤器电路分压器及函数方程案...

状态变量过滤器电路运算公式和函数频率案例及设计深...

该状态变量滤波器二阶RC有源滤波器由两个相同的运算放大器积分器组成,每个积分器用作一阶单极点低通滤波...

发表于 2019-06-27 09:30 262次阅读
状态变量过滤器电路运算公式和函数频率案例及设计深...

逻辑AND函数的切换表示和功能真值表

逻辑与功能输出仅在其所有输入均为真时才为真,否则输出为假,在1854年,乔治布尔对基于简化版“群”或...

发表于 2019-06-23 09:50 424次阅读
逻辑AND函数的切换表示和功能真值表

利用线程制作简单定时器

其实.net有为我们准备专门的Timer定时器,功能也能满足大部分的需求,只是有时候可能我们只需要一...

发表于 2019-06-17 11:31 124次阅读
利用线程制作简单定时器

为什么要用稀疏自编码器

为了实现这一限制,我们将会在我们的优化目标函数中加入一个额外的惩罚因子,而这一惩罚因子将惩罚那些ρˆ...

发表于 2019-06-11 16:28 305次阅读
为什么要用稀疏自编码器

一个名为CompenNet的卷积神经网络来隐含地...

理论上,投影仪补偿过程是一个非常复杂的非线性函数,涉及相机和投影仪传感器的辐射响应,镜头失真/渐晕,...

发表于 2019-06-07 16:46 1323次阅读
一个名为CompenNet的卷积神经网络来隐含地...

MSP430单片机函数延时的问题分析

网上普遍的用法是: #define CPU_CLOCK 8000000 #define ...

发表于 2019-06-05 15:23 159次阅读
MSP430单片机函数延时的问题分析

一款入门神器TensorFlowPlaygrou...

Problem type 问题类型(在这里我们要解决的是一个二分类问题,简单解释一下分类问题是指,给...

发表于 2019-06-03 11:03 565次阅读
一款入门神器TensorFlowPlaygrou...

关于图像梯度的基本原理

当用均值滤波器降低图像噪声的时候,会带来图像模糊的副作用。我们当然希望看到的是清晰图像。那么,清晰图...

发表于 2019-05-31 16:31 547次阅读
关于图像梯度的基本原理

数据科学家常犯的10个编程错误

数据科学家是“比软件工程师更擅长统计学,比统计学家更擅长软件工程的人”。

发表于 2019-05-24 14:50 490次阅读
数据科学家常犯的10个编程错误

如何使用Numpy搭建神经网络

很多同学入门机器学习之后,直接用TensorFlow调包实现神经网络,对于神经网络内在机理知之甚少。

发表于 2019-05-18 11:02 580次阅读
如何使用Numpy搭建神经网络

开发成功的机器学习应用程序需要一定的“偏方”

澄清说明:分类器与学习器的含义是什么?假设你有训练数据,并使用你构建另一个程序(模型)的程序处理这些...

发表于 2019-05-16 18:18 578次阅读
开发成功的机器学习应用程序需要一定的“偏方”

Linux 多线程可重入函数

在单线程程序中,整个程序都是顺序执行的,一个函数在同一时刻只能被一个函数调用,但在多线程中,由于并发...

发表于 2019-05-16 17:41 54次阅读
Linux 多线程可重入函数

linux C用户态调试追踪函数调用堆栈以及定位...

一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的B...

发表于 2019-05-16 17:36 61次阅读
linux C用户态调试追踪函数调用堆栈以及定位...

AMetal助你三步搞定传感器

传感器应用广泛种类繁多,能快速配置好传感器并加以使用无疑会帮助产品开发节省很多时间,在AMetal中...

发表于 2019-05-16 15:16 650次阅读
AMetal助你三步搞定传感器

开发成功的机器学习应用程序需要一定的“民间技巧”

似乎我们陷入了困境。幸运的是,我们想要在现实世界中学习的特性并不是从所有数学上可能的函数集中统一绘制...

发表于 2019-05-16 14:33 499次阅读
开发成功的机器学习应用程序需要一定的“民间技巧”

学会用Linux0.11-启动时间的计算函数

kernel/mktime.c代码,其中包含了闰年的计算,但是代码确实那么精简,这就是算法和思想

发表于 2019-05-15 13:55 23次阅读
学会用Linux0.11-启动时间的计算函数

如何有效地对神经网络参数进行初始化

确保均值为零,并保持每层输入方差值不变,可以保证信号不会爆炸或消失。该方法既适用于前向传播(用于激活...

发表于 2019-05-15 08:59 595次阅读
如何有效地对神经网络参数进行初始化

Ansible入门教程如何快速了解Ansible

顶级大牛带你20分钟玩转Ansible!

发表于 2019-05-12 11:49 940次阅读
Ansible入门教程如何快速了解Ansible

你会用Linux网络编程实现-readn、wri...

readn函数功能:在网络编程的读取数据中,通常会需要用到一个读指定字节才返回的函数,linux系统...

发表于 2019-05-10 11:02 115次阅读
你会用Linux网络编程实现-readn、wri...

Linux中fork()函数详解

一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相...

发表于 2019-05-08 14:08 33次阅读
Linux中fork()函数详解

一种十亿级数据规模的半监督图像分类模型

除此模型之外,本研究还尝试了几种其他的模型结构,一是移除教师 - 学生模型并使用自训练模型,二是在进...

发表于 2019-05-08 09:47 564次阅读
一种十亿级数据规模的半监督图像分类模型

射频数据转换器解决方案

一个常见的用例是您希望在系统中调试 RF-ADC 和 RF-DAC,并需要编写一个小应用以在运行时进...

发表于 2019-05-07 18:46 837次阅读
射频数据转换器解决方案

机器学习中的基本数学符号

我们常希望用更抽象的方式来描述运算过程,以将其与具体的数据或运算区分开来。因此代数的运用随处可见:也...

发表于 2019-05-06 17:48 545次阅读
机器学习中的基本数学符号

如何使用Python通过函数式编程完成excel...

我们在创建数据表的时候在 price 字段中故意设置了几个 NA 值。对于空值的处理方式有很多种,可...

发表于 2019-05-06 15:07 767次阅读
如何使用Python通过函数式编程完成excel...

了解镜头性能-调制传递函数

除了分辨率的变化外,所有透镜也会受到一定的空间畸变。图2显示了如何以非线性方式拉伸或压缩图像,使整个...

发表于 2019-05-06 11:48 803次阅读
了解镜头性能-调制传递函数

机器视觉镜头的主要特性

在镜头设计中有许多重要的特性,包括镜头分辨率、镜头畸变和光照均匀性等,直接影响机器视觉系统性能。

发表于 2019-05-06 11:46 745次阅读
机器视觉镜头的主要特性

基于GANs的新型自拍卡通化方法

此外由于卡通图像具有高度简化的特征和均匀的颜色,需要在像素级损失上进行引导。研究人员观察到画师的作品...

发表于 2019-05-06 09:57 1236次阅读
基于GANs的新型自拍卡通化方法

如果机器智能具有人类情商,那么机器智能是否会超越...

根据人的内在认知状态采取适当行动的能力对于高情商的人来说是必不可少的。诸如自动辅导系统、心理和身体健...

发表于 2019-05-05 15:18 943次阅读
如果机器智能具有人类情商,那么机器智能是否会超越...

三种常见的损失函数和两种常用的激活函数介绍和可视...

从上面阐释的步骤可以看出,神经网络中的权重由损失函数的导数而不是损失函数本身来进行更新或反向传播。因...

发表于 2019-05-05 11:42 752次阅读
三种常见的损失函数和两种常用的激活函数介绍和可视...

为什么PySnooper能从其他智能调试工具中脱...

因为你可以在不需要进行任何设置的情况下将其用于糟糕的、庞大的企业代码库中。只需打开装饰器(如下示例所...

发表于 2019-04-29 18:30 1058次阅读
为什么PySnooper能从其他智能调试工具中脱...

人与AI进行对弈谁胜谁负

昨天和清华大学参加智能车竞赛的队伍进行交谈,参加室内“步步为营”创意组的潘晓凡同学演示了他们对车模如...

发表于 2019-04-29 16:13 671次阅读
人与AI进行对弈谁胜谁负

Linux内核模块间函数调用正确方法

模块之间发生调用关系是常有的事情,下面以两个模块A、B,B使用A模块提供的函数为例,讲解正确使用的方...

发表于 2019-04-28 17:00 102次阅读
Linux内核模块间函数调用正确方法

训练神经网络到底有诀窍和套路吗?

在这篇长文中,Andrej Karpathy像一个操心的老父亲一样,详细且循循善诱地对所有机器学习从...

发表于 2019-04-28 10:54 793次阅读
训练神经网络到底有诀窍和套路吗?

嵌入式代码之编写规范

嵌入式代码编码规范,用于规范自己的代码,增强可读性,非标准规范。最好能强制自己形成良好的编码风格,有...

发表于 2019-04-26 15:21 844次阅读
嵌入式代码之编写规范

HLS Stream案例分析

第二步,不设置任何directive,直接执行C综合,此时会显示如下错误信息。该信息表明,在非dat...

发表于 2019-04-24 17:36 756次阅读
HLS Stream案例分析

仿真算法介绍:矩量法!如何自动建立3D电磁模型?

仿真结束后可以点击 View Models按钮查看SP模型参数。同时3D区域和SP模型被储存在项目文...

发表于 2019-04-24 11:53 701次阅读
仿真算法介绍:矩量法!如何自动建立3D电磁模型?

Python中五种略高级特征的使用方法

Python 多好用不用多说,大家看看自己用的语言就知道了。但是 Python 隐藏的高级功能你都 ...

发表于 2019-04-24 10:12 691次阅读
Python中五种略高级特征的使用方法

一种新的带有不确定性的边界框回归损失,可用于学习...

目标检测是一种多任务学习问题,包含目标定位和目标分类。当前最佳的目标检测器(比如 Faster RC...

发表于 2019-04-23 16:38 1972次阅读
一种新的带有不确定性的边界框回归损失,可用于学习...

谈谈Python那些不为人知的冷知识

因为当你在同一行里,同时给两个变量赋同一值时,解释器知道这个对象已经生成,那么它就会引用到同一个对象...

发表于 2019-04-22 13:40 596次阅读
谈谈Python那些不为人知的冷知识

以线性回归算法来对三种梯度下降法进行比较

从上面公式可以注意到,它得到的是一个全局最优解,但是每迭代一步,都要用到训练集所有的数据,如果样本数...

发表于 2019-04-19 17:03 676次阅读
以线性回归算法来对三种梯度下降法进行比较

图像噪声的分类!图像噪声的模型

当a

发表于 2019-04-19 17:00 1231次阅读
图像噪声的分类!图像噪声的模型

PCA类在降维和数据重构的简单用法

sklearn.decomposition.SparsePCA和sklearn.decomposit...

发表于 2019-04-17 09:57 1647次阅读
PCA类在降维和数据重构的简单用法

Python爬虫爬取美剧网站

后来发现,其电视剧链接都是在文章里面,然后文章url后面有个数字编号,就像这样的http://cn1...

发表于 2019-04-16 12:52 666次阅读
Python爬虫爬取美剧网站

讲述Nordic nRF5 SDK的主要调试手段...

nRF5 SDK日志打印功能是通过nRF_Log模块实现的(上面展示的日志都是通过nRF_Log打印...

发表于 2019-04-15 15:38 1636次阅读
讲述Nordic nRF5 SDK的主要调试手段...

针对幅度响应设计的有源滤波器的相位响应介绍

在本系列的第一篇文章中,我考察了滤波器相位与滤波器实 现拓扑结构的关系。在第二篇文章中,我考察了低通...

发表于 2019-04-09 08:05 675次阅读
针对幅度响应设计的有源滤波器的相位响应介绍

为什么损失函数可以是这个形式?机器学习的终极目标...

不过,当事件还没有发生的时候,就不是直接去求信息量了,而应该是求信息量的期望值,所以这个时候,我们要...

发表于 2019-04-08 17:23 687次阅读
为什么损失函数可以是这个形式?机器学习的终极目标...

一种不同于双线性插值的上采样方法

我们可以看到,该网络将传统的非线性插值替换成 DUpsample,同时在 feature fuse ...

发表于 2019-04-08 14:47 814次阅读
一种不同于双线性插值的上采样方法

不直接使用C标准库中的内存管理函数的原因

STM32 在上电启动之后默认从 Flash 启动,启动之后会将 RW 段中的 RW-data(初始...

发表于 2019-04-05 15:37 782次阅读
不直接使用C标准库中的内存管理函数的原因

语义表征的无监督对比学习:一个新理论框架

首先,是否存在良好且广泛适用的表征呢?在计算机视觉等领域,答案是肯定的,因为深度卷积神经网络 (CN...

发表于 2019-04-04 17:41 1225次阅读
语义表征的无监督对比学习:一个新理论框架

递归的三大要素!有关递归的一些优化思路

如何优化?一般我们可以把我们计算的结果保证起来,例如把 f(4) 的计算结果保证起来,当再次要计算 ...

发表于 2019-04-03 14:11 1096次阅读
递归的三大要素!有关递归的一些优化思路

标记训练集中的数据样本是开发机器学习应用的最大瓶...

为了解决噪声等问题,Supert Drybell使用生成建模技术,以一种可证明一致的方式自动估计标记...

发表于 2019-04-02 16:24 906次阅读
标记训练集中的数据样本是开发机器学习应用的最大瓶...

离散傅里叶变换DFT中的第5个问题:频域抽样进行...

第一个问题:DFT,就是频域抽样。那么这个抽样的条件是什么呢?也就是第二个问题“频域抽样定理”。抽样...

发表于 2019-04-02 13:53 892次阅读
离散傅里叶变换DFT中的第5个问题:频域抽样进行...

TensorFlow 的功能以及在其他编程语言中...

Python 是 TensorFlow 支持的第一种客户端语言,目前支持的功能最多。该功能正逐步移植...

发表于 2018-04-27 09:38 385次阅读
TensorFlow 的功能以及在其他编程语言中...