- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正在用 C 语言编写嵌入式应用程序,其中性能至关重要。
目前,我正在分配大量空内存,如下所示:calloc(1, num_bytes)
- 然而,我只是将 num_bytes
计算为多个项目和代码前面每个项目的大小,因为它是用于调用 malloc
的代码。
calloc
似乎很独特,因为它是 -alloc 系列中唯一的内存分配函数,它采用两个参数来确定大小。这样做有充分的理由吗?指定不同的参数是否会对性能产生影响?选择这种参数布局的理由是什么?
最佳答案
具有单独参数的一个优点是它可以自动防止整数溢出:
// On a 32-bit system, the calloc will almost certainly fail, but the malloc
// will succeed to overflow, likely leading to crashes and/or security holes
// (e.g. if the number of items to allocate came from an untrusted source)
void *a = calloc(64, 67108865); // 2^32/64 + 1
void *b = malloc(64 * 67108865); // will allocate 64 bytes on 32-bit systems
对于大型分配,执行 calloc
而不是 malloc
和 memset
组合也可能具有性能优势,因为 calloc
实现可以使用其堆的内部知识来避免不必要的工作或提高缓存性能。
例如,如果分配器决定使用操作系统函数,例如 mmap(2)
或 VirtualAlloc
为了获得更多的虚拟地址空间,出于安全原因,该内存将被预先置零。参见 this question详细解释。对于小额分配,您不太可能注意到很大的差异。
一些 calloc
实现只是在内部调用 malloc
和 memset
,所以除了潜在的溢出检查之外没有任何优势。
关于调用(): Do the individual values matter for performance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12149300/
我的任务其实很简单。也许我太习惯于 C++ 而看不到我的错。我有两个类(class)和一个 list 。该列表应包括由 class1 构成的所有对象,而 class1 还包括 class2 的所有对象
我有三个简单的表:users、profile 和 watched,其中包含用户的 ID 和他们观看的电影标题。 下面的脚本显示了表watched中不同用户的匹配值: $id = $_SESSION['
我正在使用具有以下简单本体的 Protege 4.3(也尝试过 5-beta): Class: Person Class: Man SubClassOf: Person Ind
在文档中,Symfony 有一种方法可以访问 customize a Individual field ,基于小部件的名称/ID。 {% form_theme form _self %} {% blo
这似乎是一个微不足道的问题。我需要知道,如果我在值(value) 99 美元的 iOS 开发者计划:公司 下注册我的公司,我现在可以在同一家公司下添加开发者。 我的问题是,这些开发者是否还需要分别拥有
有没有办法指定 matplotlib 表中各个列的宽度? 我表中的第一列仅包含 2-3 位 ID,我希望此列比其他列小,但我似乎无法让它工作。 假设我有一张这样的表: import matplotli
我有一个应用程序,我可以在流程的一部分中以 JSON 格式将消息写入 Azure 服务总线队列。我有一个下游进程,我希望将该消息从队列中弹出,将 json 转换为对象,然后处理该对象。 我将消息推送到
我有一个程序,它告诉用户输入三个int并将每个整数转换为字符串。 即 1 = 1 ; ...等等。这里的问题是为每个用户输入定义int。我怎样才能只用一个输入来获取它并循环它以获取另一个输入,考虑到单
我已经在 unity 中工作了一段时间,并且已经通过关注 this 获得了基本的多人游戏设置。教程。但是,我想添加更多东西,其中之一是跟踪每个玩家的相机。我已经查过了,甚至找到了该教程创建者的评论。所
我有一个单词列表,只想保留名词。 这不是 Extracting all Nouns from a text file using nltk 的重复项 在链接的问题中处理一段文本。接受的答案提出了一个标
一个愚蠢的问题:假设我有一个存储在 View 状态中的对象。我将其标记为可序列化。我还在我的 WCF 服务中重复使用相同的对象。但是 Web 服务序列化并公开了一些不需要/不安全地显示给服务客户端的内
我正在编写 Rspec 测试,但它们失败了,因为 Mysql 无法识别字段列表中的 individual 列。 当我查看内部时,individual 列确实存在于数据库中。 schema.rb 将其列
将一些自定义样式应用到不符合主题默认样式的单个小部件元素的最方便的方法是什么。我仍然对装饰器的用法感到困惑。如何应用多个装饰器,例如。用于小部件元素的边框属性和背景。 我尝试过使用自定义装饰器,例如。
我正在尝试通过 Eclipse 访问本体。我使用猫头鹰 api。我在 Protegé 中创建我的本体,但是我想通过代码创建和分类新的个体。这怎么可能?我用谷歌搜索了所有内容,但找不到任何有用的信息。
我想将可配置产品的所有子项设置为“单独不可见”,并且还为可配置产品的子项激活网站下的复选框。 有办法吗? 最佳答案 如果您没有 MySQL 访问权限,我相信这也可以: $sites=Mage::app
使用 maptplotlib,我使用 scatter 方法绘制了一些点(参见下面的代码)。我想单独标记每个点。 此代码将用 labels 数组标记每个点,但我希望我的第一个点用 labels[0] 标
我目前正在用 C 语言编写嵌入式应用程序,其中性能至关重要。 目前,我正在分配大量空内存,如下所示:calloc(1, num_bytes) - 然而,我只是将 num_bytes 计算为多个项目和代
我有一个接受多个参数的程序,例如 breakfast.py --customer=vikings eggs sausage bacon 可以从特定选项列表中指定“鸡蛋”、“香肠”和“培根”。 现在我希
我想听取表单的值更改,但不是针对整个表单,而是仅针对已更改的表单控件。 例如,如果我的表单看起来像这样。 this.form = this._fb.group({ firstName: [''],
在 W3 OWL 规范中,个体的属性分为两组:数据类型属性和对象属性。定义了对象属性(正如我发现的一篇文章所说的那样): "Object properties (owl:ObjectProperty)
我是一名优秀的程序员,十分优秀!