问题标签 [dynamic-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 投票
2 回答
156 浏览

c++ - 标准::向量中的标准::字符串?

如果内部向量被重新定义,我已经在内部遇到了一些问题std::vectorstd::vector我想知道拥有 a 是否完全安全std::vector<std::string>(因为可以重新调整内部字符串的尺寸)还是std::vector<std::string*>更好?

0 投票
10 回答
247 浏览

c++ - 在智能指针出现之前

在智能指针(能够获取动态区域中的资源的所有权并在使用后释放它们)出现之前,我想知道当作为参数传递给采用资源指针的函数时,如何对动态创建的对象进行簿记。

通过簿记,我的意思是如果有一个“新的”,那么在稍后的某个时候应该有一个“删除”跟随它。否则,程序将遭受内存泄漏。

这是一个示例,其中 B 是一个类,而 void a_function(B*) 是第三方库函数:

我在第 3 行做什么?我是否假设第三方功能已经处理了内存的取消分配?如果它没有并且我假设它有,那么我的程序就会出现内存泄漏。但是,如果它取消分配 b 占用的内存并且我也在 main() 中这样做以便安全起见,那么 b 实际上最终会被释放两次!我的程序会因为双释放错误而崩溃!

0 投票
2 回答
1027 浏览

c - 通过切片一大块 malloc 的内存来减少 malloc 调用

首先,是我得到这个想法的地方:

我曾经写过一个应用程序,它使用了大量的小内存块,每个内存块都用 malloc() 分配。它工作正常,但速度很慢。我只用一个替换了对 malloc 的许多调用,然后在我的应用程序中分割了那个大块。它要快得多。

我正在分析我的应用程序,当我减少 malloc 调用的数量时,我得到了意想不到的良好性能提升。不过,我仍在分配相同数量的内存。

所以,我想做这个人所做的事情,但我不确定最好的方法是什么。

我的想法:

陷阱:

  • 我必须确保我不超过10000
  • 我必须按照我占用的顺序释放内存。(在我的情况下不是主要问题,因为我使用的是递归,但如果可能的话我想避免它)。

灵感来自 Mihai Maruseac:

首先,我创建了一个链表,int它基本上告诉我哪些内存索引是空闲的。然后我在我的结构中添加了一个名为的属性,int memoryIndex它可以帮助我以任何顺序返回占用的内存。幸运的是,我确信我的内存需求在任何时候都不会超过 5 MB,因此我可以安全地分配这么多内存。解决了。

0 投票
8 回答
17467 浏览

c++ - 查找动态分配数组的大小

为什么无法获得以这种方式分配的缓冲区的长度。

当同一个数组被释放时

运行时必须知道要释放多少。在删除数组之前有什么方法可以访问长度。如果没有,为什么没有提供这样的 API 来获取长度?

0 投票
4 回答
2324 浏览

c - 如何获取动态分配的二维数组的大小

我已经动态分配了二维数组。这是代码

现在我必须知道在 arrofptr,arrofptr[0],arrofptr[1] 中分配了多少字节?有什么办法知道大小吗?

如果我们打印

然后它将打印 4。

0 投票
2 回答
1222 浏览

c - 将数组声明为指向数组的指针时何时分配内存

在尝试分配 20x10 的 2D 数组时,在哪些步骤中分配了内存

第1步:int (*p)[10];

第2步:p = malloc( 20 * sizeof(*p) );

是在步骤 2 中分配了所有内存(20 x 10 x 4 字节)还是在步骤 1 中也分配了一些内存?

0 投票
3 回答
648 浏览

c++ - 在对象的动态数组上调用 delete [] 不会释放内存?

在以下代码中:

执行的结果是:

  1. 如果我只分配 10,索引号为 15 的元素怎么可能存在?
  2. 为什么整个数组被释放后指针仍然有值?

我尝试使用这样的单一分配删除:

结果正常:

在 fedora 17 和另一个平台(SLC5 - red hat based linux)上使用 gcc 4.7.2 和 gcc 4.1.2 进行了测试,以确保它不依赖于编译器。我在这里做错了什么?

0 投票
0 回答
166 浏览

c - 如何动态声明二维数组?

可能重复:
如何在 C 中使用动态多维数组?

他们有什么方法可以像一维数组一样动态分配二维数组。

使用

malloc

或者

卡洛克

0 投票
2 回答
812 浏览

c - 二维数组动态内存分配崩溃

可能重复:
如何在 C 中正确设置、访问和释放多维数组?

我正在尝试使用 calloc 为 2D 数组动态分配内存。列固定为 2,因此只有动态行。

这是我一直在尝试的:

但问题是,在访问数组时,程序崩溃了。我正在使用带有 MinGW GCC 的 Eclipse。

请让我知道是否需要在此处放置更多数据或告诉我如何处理此问题,因为这是我的第一篇文章。

0 投票
2 回答
2172 浏览

c - 动态分配文件指针数组

是否可以在 C 中“动态”分配文件指针?我的意思是:

其中 n 是一个整数值。我需要一个指针值数组,但在获得用户输入之前我不知道有多少,所以我无法对其进行硬编码。任何帮助都会很棒!