问题标签 [static-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.

0 投票
1 回答
345 浏览

c - c 保留大小的二维数组静态初始化

类似于一维数组声明:

请建议如何/如果可能的话声明这样的二维数组?

谢谢 !

0 投票
3 回答
159 浏览

c++ - 指向数组的指针维护元素的计数器

我有一个多个类继承的接口。

对于 A、B、C 类中的每一个,我在容器类中创建了一个具有不同大小的实际类型的数组。

此外,我有一个指向“SomeInterface”的指针数组,我想在其中有一个指向每个像这样的实际数组的指针。

当我必须使用 someInterface 数组时,就会出现问题,因为无法通过 someInterface 指针获取实际数组的大小。

这个问题有什么好的解决方案?我真的需要一些帮助来解决这个问题。也不想使用动态分配,所以没有使用 vector<> 或 malloc 等的解决方案,因为我正在写信给 Arduino。

0 投票
2 回答
150 浏览

c++ - 了解基本动态分配示例

我对动态分配有一个非常基本的看法。按照可能的语法研究树我已经说过它们都是动态分配。

第一的:

然后是更简洁的一个:

甚至:

然后在同样的解释中,我被告知第三种情况实际上是静态分配。比我糊涂了。

真的吗?有人可以解释一下为什么吗?

非常感谢。

0 投票
3 回答
352 浏览

c++ - 我可以在成员函数内的这个指针上应用删除吗?

据我了解,如果使用指向动态分配的对象的指针调用了成员函数,则该对象将被删除。但是如果成员函数是使用静态分配的对象调用的,那么会发生什么?

0 投票
1 回答
154 浏览

c - 递增指向静态分配数组的指针

在这些情况下指针增加了多少,为什么?

假设main我有一个带有n 个元素的静态分配数组和一个带有n行和M列的静态分配矩阵(二维数组),我正在调用函数fg我无法在代码中编写它,因为我无法用大量代码发布问题,几乎没有文字)。

0 投票
1 回答
1018 浏览

c++ - c++ 在编译时分配的内存

我读到虽然动态内存是在运行时在堆上分配的,但静态内存是在编译时在堆栈上分配的,因为编译器知道在编译时必须分配多少内存。

考虑以下代码:

如果仅在运行期间读取其实际大小,编译器如何知道在编译时为 a[] 分配多少内存?

0 投票
3 回答
981 浏览

c - 堆栈上的变量是“静态分配的”吗?

我正在阅读这篇文章并看到:“本文假设您已经了解并至少基本了解了 GNU/Linux 系统中的内存映射是如何工作的,特别是在堆栈中静态分配的内存和在堆栈中动态分配的内存之间的区别堆。”

这让我很困惑,因为我认为堆栈和堆是动态分配的,这意味着仅在必要时才分配,而全局变量和在函数内部声明为“静态”的变量是静态分配的,即始终分配。

例如,如果我有

值 1 仅被放入堆栈,堆栈指针仅在函数 f() 被调用时才递增。同样,如果我有

只有调用 f() 时才会分配该堆内存。但是,如果我有“int x = 1;” 在程序的全局部分或“static int x = 1;” 在函数体内,每当我运行这个程序时,该内存将在数据部分中分配,值为 1。

我错了吗?

0 投票
2 回答
133 浏览

c++ - 子数组是否保证线性分配?

我知道这个答案违反了reinterpret_cast规则,但它也假定子数组将被线性分配。

我相信这并不能保证,但是当我搜索标准时,我发现我的信心在动摇。如果我静态分配一个二维数组,如下所示:

我可以假设所有元素都将线性分配吗?也就是说如果foo[0]在地址0x00000042处,会:

  • foo[1]位于地址 0x00000052
  • foo[2]位于地址 0x00000062
  • foo[3]位于地址 0x00000072

sizeof(int) == 4这些地址是十六进制的,是的,它们为带有;的 4 元素子数组提供空间。它们可能也可能不会被零初始化。

0 投票
2 回答
2418 浏览

arrays - 可以快速创建静态分配的数组吗?

我想在 swift 中创建一个具有少量固定值(比如 16 个浮点数)作为实例数据的结构。要求这个结构体不要将这些值存储在堆上,这样结构体实例的地址就是实例变量的地址。还要求这些值可以通过下标在结构内部访问,就像数组一样。

在 C 中,您可以简单地定义这种东西:

使用此代码,sizeof(Matrix4x4) == 64并且&myMatrix == &myMatrix.elements[0]; 在 swift 中,如果我类似地将elements变量定义为 type [Float],则矩阵实例仅包含指向数组的指针,因为该Array<Float>实例是存储在堆上的对象。

有没有办法在不放弃类似数组的下标访问的便利性和效率的情况下快速获得实例变量的静态分配?

0 投票
1 回答
219 浏览

c - Estimating memory footprint and CPU usage for a C library

I have a static library written in C, with no dynamic memory allocation.

Until now, the library has only been used in an application for regular i386 Linux, where CPU and memory was plentiful.

I now need to try building a version of the library for an embedded, real-time ARM9 system (provided by a 3rd party). Before that I have to give some rough estimates of memory footprint and CPU usage.

For memory footprint, I build a tiny application on my i386 machine, statically linking with my library, that exercises all the functions of my library. Is it roughly correct that checking the resident memory of this application will give me a ballpark estimate of my library's memory footprint? Is there a better way to measure it?

For estimating CPU usage, I'm at a loss. I can of course run the test application mentioned above, on my i386 system, but I don't know what metrics that'll give me (if any) that can translate into something relateable to the ARM system. Is there a way to do it?