问题标签 [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.
c++ - 标准::向量中的标准::字符串?
如果内部向量被重新定义,我已经在内部遇到了一些问题std::vector
。std::vector
我想知道拥有 a 是否完全安全std::vector<std::string>
(因为可以重新调整内部字符串的尺寸)还是std::vector<std::string*>
更好?
c++ - 在智能指针出现之前
在智能指针(能够获取动态区域中的资源的所有权并在使用后释放它们)出现之前,我想知道当作为参数传递给采用资源指针的函数时,如何对动态创建的对象进行簿记。
通过簿记,我的意思是如果有一个“新的”,那么在稍后的某个时候应该有一个“删除”跟随它。否则,程序将遭受内存泄漏。
这是一个示例,其中 B 是一个类,而 void a_function(B*) 是第三方库函数:
我在第 3 行做什么?我是否假设第三方功能已经处理了内存的取消分配?如果它没有并且我假设它有,那么我的程序就会出现内存泄漏。但是,如果它取消分配 b 占用的内存并且我也在 main() 中这样做以便安全起见,那么 b 实际上最终会被释放两次!我的程序会因为双释放错误而崩溃!
c - 通过切片一大块 malloc 的内存来减少 malloc 调用
首先,这是我得到这个想法的地方:
我曾经写过一个应用程序,它使用了大量的小内存块,每个内存块都用 malloc() 分配。它工作正常,但速度很慢。我只用一个替换了对 malloc 的许多调用,然后在我的应用程序中分割了那个大块。它要快得多。
我正在分析我的应用程序,当我减少 malloc 调用的数量时,我得到了意想不到的良好性能提升。不过,我仍在分配相同数量的内存。
所以,我想做这个人所做的事情,但我不确定最好的方法是什么。
我的想法:
陷阱:
- 我必须确保我不超过10000
- 我必须按照我占用的顺序释放内存。(在我的情况下不是主要问题,因为我使用的是递归,但如果可能的话我想避免它)。
灵感来自 Mihai Maruseac:
首先,我创建了一个链表,int
它基本上告诉我哪些内存索引是空闲的。然后我在我的结构中添加了一个名为的属性,int memoryIndex
它可以帮助我以任何顺序返回占用的内存。幸运的是,我确信我的内存需求在任何时候都不会超过 5 MB,因此我可以安全地分配这么多内存。解决了。
c++ - 查找动态分配数组的大小
为什么无法获得以这种方式分配的缓冲区的长度。
当同一个数组被释放时
运行时必须知道要释放多少。在删除数组之前有什么方法可以访问长度。如果没有,为什么没有提供这样的 API 来获取长度?
c - 如何获取动态分配的二维数组的大小
我已经动态分配了二维数组。这是代码
现在我必须知道在 arrofptr,arrofptr[0],arrofptr[1] 中分配了多少字节?有什么办法知道大小吗?
如果我们打印
然后它将打印 4。
c - 将数组声明为指向数组的指针时何时分配内存
在尝试分配 20x10 的 2D 数组时,在哪些步骤中分配了内存
第1步:int (*p)[10];
第2步:p = malloc( 20 * sizeof(*p) );
是在步骤 2 中分配了所有内存(20 x 10 x 4 字节)还是在步骤 1 中也分配了一些内存?
c++ - 在对象的动态数组上调用 delete [] 不会释放内存?
在以下代码中:
执行的结果是:
- 如果我只分配 10,索引号为 15 的元素怎么可能存在?
- 为什么整个数组被释放后指针仍然有值?
我尝试使用这样的单一分配删除:
结果正常:
在 fedora 17 和另一个平台(SLC5 - red hat based linux)上使用 gcc 4.7.2 和 gcc 4.1.2 进行了测试,以确保它不依赖于编译器。我在这里做错了什么?
c - 二维数组动态内存分配崩溃
可能重复:
如何在 C 中正确设置、访问和释放多维数组?
我正在尝试使用 calloc 为 2D 数组动态分配内存。列固定为 2,因此只有动态行。
这是我一直在尝试的:
但问题是,在访问数组时,程序崩溃了。我正在使用带有 MinGW GCC 的 Eclipse。
请让我知道是否需要在此处放置更多数据或告诉我如何处理此问题,因为这是我的第一篇文章。
c - 动态分配文件指针数组
是否可以在 C 中“动态”分配文件指针?我的意思是:
其中 n 是一个整数值。我需要一个指针值数组,但在获得用户输入之前我不知道有多少,所以我无法对其进行硬编码。任何帮助都会很棒!