问题标签 [dynamic-arrays]

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 投票
2 回答
72876 浏览

delphi - 当我直到运行时才知道长度时如何声明数组?

我最初有一个被定义为全局变量的数组[1..1000]。但是现在我需要将其设为 n,而不是 1000,并且直到稍后我才知道 n。在填充数组之前我知道 n 是什么,但我需要它是全局的,因此需要一种在运行时定义全局数组大小的方法。

上下文正在用文件中字节的线性变换填充数组。我不知道文件有多大,直到有人想要打开它并且文件可以是任意大小。

0 投票
12 回答
23353 浏览

arrays - 动态分配数组的理想增长率是多少?

C++ 有 std::vector,Java 有 ArrayList,许多其他语言都有自己的动态分配数组形式。当动态数组空间不足时,它会被重新分配到更大的区域,并将旧值复制到新数组中。这种阵列性能的核心问题是阵列的大小增长速度有多快。如果您总是只增长到足以适应当前的推动,那么您最终每次都会重新分配。因此,将数组大小加倍或乘以 1.5 倍是有意义的。

有没有理想的生长因子?2倍?1.5 倍?理想我的意思是数学上合理的,最好的平衡性能和浪费的内存。我意识到理论上,鉴于您的应用程序可能具有任何潜在的推送分布,这在某种程度上取决于应用程序。但是我很想知道是否有一个“通常”最好的值,或者在某些严格的约束下被认为是最好的。

我听说某处有关于这方面的论文,但我一直找不到。

0 投票
4 回答
1627 浏览

c++ - 在 C++ 中删除二维动态数组时出现问题(最终存储在向量中)

所以我有这个二维动态数组,当我完成它时我想释放它的内容。但是,在析构函数之后,我一直遇到堆损坏。如果我注释掉析构函数,代码可以正常工作(当然有内存泄漏)。(视觉工作室 2005)

我不知道代码有什么问题。唯一的另一件事是在其他地方,我在发生崩溃的循环中这样做了

这应该不会造成任何问题,对吧?如果我没记错的话, push_back 会创建一个副本,而不是存储指针或引用。

PS。是的,我应该使用向量。但我不被允许。

附加信息:

未定义 operator= 和复制构造函数。我想这是问题的原因。

0 投票
4 回答
2168 浏览

c++ - C++ 动态分配的静态维度数组数组

我需要创建一个包含可变数量'char[2]'的结构,即2个字符的静态数组。

我的问题是,如何为 x 个字符 [2] 分配内存。

我试过这个(假设 int x 已定义):

(它没有工作)

我意识到我可以使用 std::vector<char[2]> 作为容器,但我很好奇如何使用原始指针来完成。

我对 C++ 很陌生,正在努力学习。

0 投票
6 回答
2834 浏览

c++ - C++ 动态数组访问冲突

**** 抱歉,对于原始帖子中有关 numCars 的混淆感到抱歉。我修改了代码和原来的一致******

以下学术课程是原始问题的简化版本,但它侧重于我尚未解决的问题。这个问题有 2 个类和一个主要方法,这两个类由一个 Dealer 类和一个 Car 类组成。Dealer 类有一个私有的 Car* 指针,该指针在 Dealer 的构造函数中初始化为一个动态数组。调用 Dealer 的 addCar 方法时,main 方法出现错误。在 main 方法中,我有意将 Dealer 变量传递给 addCar(Dealer& d) 方法,以模仿原始应用程序的结构。然后 addCar 方法调用经销商的 addCar(const Car& car) 方法,当我执行 cars[numCars++]=car; 时发生访问冲突。你能解释一下为什么 cars[numCars++]=car 会导致访问冲突吗

:numCars(0) {cars = new Car[maxCars];}

setNumCars(int count){numCars = count;}

0 投票
9 回答
2919 浏览

c++ - C++ 数组大小 x86 和 x64

简单的问题,我正在编写一个需要打开巨大图像文件(8kx8k)的程序,但我对如何初始化巨大的数组以在 c++ 中保存图像有点困惑。

我一直在尝试这样的事情:

但有时我的 NULL 检查没有发现数组没有初始化,知道为什么吗?

此外,即使在具有 12 GB RAM 的 x64 机器上运行,我也无法初始化超过 2 个或 3 个数组,知道为什么吗?

我真的希望不必使用数组的各个部分。欢迎任何帮助。

谢谢。

0 投票
1 回答
6228 浏览

c++ - 如何使用 gdb “观看” C++ 动态数组?

考虑以下示例:

如何为整个阵列添加手表?我可以一个一个地添加一个手表(kk[0]kk[1] ...),但是既然我知道数组的长度,有没有办法自动做到这一点?我的意思是kk[0..size-1]左右。

我将 NetBeans IDE 与 cygwin g++ 和 gdb 一起使用。

0 投票
4 回答
217 浏览

c++ - C++ - 指向单个值的指针是否与大小为 1 的动态数组相同?

我有这段代码,我正在考虑简化:

(我“别无选择”,只能在这里使用一个简单的动态数组。在我的工作场所,向量被认为“太复杂”)

我想知道我是否可以逃脱

但是,我在几个方面检查了结果的数量并采取了相应的行动

那些代码还能用吗?如果不是,为什么?

0 投票
1 回答
379 浏览

c - 如何使用 _spawn 或 _exec 进行引导?

编写以下程序后,它似乎没有将参数传递给被调用的应用程序。在研究_spawnv及其能做什么时,发现_execvp似乎是一个合适的替代方案。有谁看到源代码中的问题并知道需要做些什么来解决它?

0 投票
3 回答
588 浏览

delphi - Delphi 动态数组包含哪些簿记数据?

这是一个检查内存分配的简单程序。使用任务管理器检查前后值表明每个动态数组在 size = 1 时占用 20 个字节的内存。元素大小为 4,这意味着簿记数据的开销为 16 个字节。

通过查看 system.pas,我可以找到一个 -4 字节的数组长度字段和一个 -8 字节的引用计数,但我似乎找不到对其他 8 个字节的任何引用。有人知道他们在做什么吗?

示例程序: