问题标签 [stack-allocation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何用非堆限制大小的字符串替换 std::string 成员?
我有一个带有一些无处不在的数据结构的代码库;并且所述结构具有 std::string 成员。现在,出于某种原因,我希望这个代码库在 std::string 不可用时工作,实际上没有动态分配内存(至少不是通常的方式)。我还可以验证该字符串成员的字符串长度永远不会超过 M 个字符(并且 M 很小)。
现在,我应该用什么替换 std::string,这样我就不必做很多重写,一方面;并且我的约束在另一个方面得到满足?
笔记:
- 我无法将字符串的计算移至编译时。
const char*
如果解决方案只有一个普通的构造函数,一个构造函数,或者两者都有,那也没关系。- 涉及使用的解决方案
std::string_view
可能是相关的(但我不确定这是否有用)。
arrays - realloc 堆栈分配的字符 (*)[n]
我有一个函数可以像这样进行重新分配:
我在 main 中调用该函数:
但是 gcc 会发出警告:
两个问题:
- 如何将 char (*)[n] 类型的对象转换为 char**?
- 我正在尝试重新分配堆栈分配的对象。这甚至允许吗?
java - 外线电话是什么意思?
我正在阅读有关 Java 中的值对象的 JEP文档,并在动机部分中遇到了这样的对象标量化上下文中的一行:
有一些优化可以消除某些代码区域中的对象分配。例如,如果可以成功执行逃逸分析,则有时可以将对象“缩放”到它们的组件字段中。然而,这样的优化在范围和适用性上是有限的。对于离线调用,对象仍然必须装箱到内存中,只要执行现有的 Java 引用语义
我从这篇文章的答案中得到了关于这里所说的优化的想法。
我无法理解的部分在 JEP 中,作者所说的外线调用是什么意思?什么可以是一个很好的例子?
简而言之,我理解 Hotspot 将展开 Object 的字段并在对象的范围不离开方法时将它们分配到方法堆栈中的事实。
什么样的代码看起来像外线调用?