- 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/
Matter-js - 如何获得矩形的宽度和高度? 我需要知道是否在 Matter-js 中实现了距离返回方法。 // part.vertices[0] and part.vertices[1] 我想
如何在 Matter.js 中添加以编程方式触发的触摸/鼠标事件?我为引擎设置了一些碰撞事件,但无法触发停止当前拖动操作的 mouseup 事件。我已经尝试了针对 canvas 元素、mouse/mo
我正在使用matter.js我有具有绝对位置的对象的顶点数据(来自 SVG 文件)。当我尝试将它们放置在 map 上时,它们最终都位于 0, 0 附近。通过以下代码片段可以轻松观察到这一点:
我经常读如下语句: “当变量将被多个线程读取和写入时,请使用“同步”。 来源: https://jorosjavajams.wordpress.com/volatile-vs-synchronized
是否可以在matter.js中创建位于x/y坐标中心的单个重力/力点? 我已经成功地使用 d3.js 做到了这一点,但想询问 Matter.js,因为它能够使用多个 Polyshape。 http:/
授予,micro-optimization is stupid并且可能是实践中许多错误的原因。尽管如此,我还是看到很多人这样做: void function( const double& x ) {}
我当前的实现使用大量具有这种语法的复制构造函数 MyClass::Myclass(Myclass* my_class) 它真的(功能上)不同于 MyClass::MyClass(const MyCla
原始问题: JSHint当我的 JavaScript 调用一个定义在页面下方的函数而不是对它的调用时,就会提示。但是,我的页面是用于游戏的,在整个下载完成之前不会调用任何函数。那么为什么出现在我的代码
我有一个 Hugo 网站,每个文件都有翻译,使用页面包。 所以关于页面看起来像这样: - about - about-image.jpg - index.en.md - index.nl.
我正在尝试运行一个在服务器上运行物理模拟的服务器,并让客户端通过 websockets/socket.io 连接到该服务器。我知道我可以使用 Matter.js 将引擎与渲染分开计算。所以我的问题是,
我通过 Matter.js 创建了如下两个矩形 我正在尝试将“a”框移到“b”框上方。 我想我应该写applyForce此时,如何计算适当的 X、Y 力值以放入因子? 下面的代码是由粗略的近似值组成的
WHERE IN 子句中值的顺序是否重要? (如果这很重要,这是在 Firebird SQL 上) 比如: where field1 in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10
一切都是不变的,但是将 chrome 选项卡移动到另一个监视器会以某种方式影响落球的物理特性 问题视频:(在mac上录制) https://www.youtube.com/watch?v=eNoVsh
问题.js - 这是 one of the demo来自matter.js。它返回一个空白屏幕。我尝试了几种方法,并在这方面花费了数小时和数小时,但仍然无法弄清楚这里出了什么问题。 我检查了括号、语法
我正在尝试以编程方式设置 matter.js 中链接主体的宽度和高度。不幸的是,我只得到 0 作为值,我不确定为什么。我的猜测是图像加载速度不够快,无法提供这些值。如何在加载图像之前加载这些尺寸? 伪
我对在这里提问还比较陌生,所以请多多包涵。我正在尝试使用 Matter.js 作为主要物理引擎创建一个自上而下的驾驶游戏。我希望红色汽车与绿色广场相撞。然而,我仍然不知道如何在我的游戏中实现 Matt
我使用不同的语言和平台从事各种项目。我将其中的一部分抽象到他们自己的独立项目中,我想向公众开放其中的一些。 让我卡住的是洗礼。 那么,有关系吗?我应该选择一些东西并坚持下去吗? 如果它确实重要,那么更
下面是在执行时引发一些错误的代码。我想做的是无论什么(错误或无错误)都将执行代码的最后一行。 "backend_photo_album", )); @unlink($file_path);
我正在使用 .js 创建一个简单的游戏,您必须将球插入洞中。 如果我使用 isStatic: false对于球对象,在游戏开始时它会掉落。如何旋转整个平台,使其保持水平并且物体不会掉落但可以被插入?
我正在创建一个项目,其中用户拾取并抛出一个物体(使用鼠标约束)。 body 被设置为可以绕约束点枢转。我需要找出,从放开它的那一刻起,它在着陆之前完全旋转了多少次(+-360 度)。阅读文档,我能找到
我是一名优秀的程序员,十分优秀!