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

c++ - 这种动态分配有什么作用?

今天,我发现你可以用 C++ 编写这样的代码并编译它:

这样做的目的是什么?我当然知道动态new int(5)的东西,但在这里我迷路了。有什么线索吗?

0 投票
10 回答
2412 浏览

c++ - 如何使用 STL (C++) 避免重新分配

这个问题来源于这个话题:

矢量储备 c++

我正在使用类型的数据结构vector<vector<vector<double> > >double在添加项目(s)之前,不可能知道这些向量中的每一个(除了外部向量)的大小。我可以得到每个“维度”中项目数量的近似大小(上限)。

具有共享指针的解决方案可能是要走的路,但我想尝试一个解决方案,其中vector<vector<vector<double> > >简单地拥有.reserve()足够的空间(或以其他方式分配了足够的内存)。

A.reserve(500)(假设 500 是大小,或者大小的上限)是否足以容纳大尺寸的“2D”向量,比如 [1000][10000] ?

我提出问题的原因主要是因为我看不到任何合理估计当时的内部大小的A方法.reserve(500)

我的问题的一个例子:

这会确保不对 A 进行重新分配吗?

如果temp2.reserve(100000)并且temp1.reserve(1000)在创建时添加,这将确保根本不会发生重新分配吗?

.reserve()在上面请忽略由于保守的调用可能会浪费内存的事实。

谢谢大家!

0 投票
1 回答
288 浏览

c - GLib 原子和内存块

以下代码片段来自The Official GNOME 2 Developer's Guide

  • 这是否意味着每个原子都是 42 字节,每个“内存块”包含42 16 个原子,并且40000/16=2500在运行上述代码时会创建内存块?

  • 他们为什么在这里使用 gchar* ?运行时是否会发生从 gpointer (void*) 到 gchar* 的隐式转换data[i] = g_mem_chunk_alloc(my_chunk);

  • 如果上述陈述为真,则每个 gchar* 指向 42 字节的内存。那么如何访问特定原子的所有字节呢?会data[7]+41是一个可用的内存位置吗?


  • 当我尝试编译代码 gcc 产生此错误消息:

    error: storage size of ‘my_chunk’ isn’t known 怎么了?

0 投票
3 回答
249 浏览

c++ - 删除内存错误

我有以下情况,

该函数在调用时会引发错误,因为它在尚未分配时setTest尝试删除。_test发生这种情况是因为_test未设置为 0X0。

谁能帮我理解这一点?

0 投票
1 回答
66 浏览

dynamic-memory-allocation - 本地和动态分配

我有一棵树,我想释放分配的内存,但我面临一个问题,一个指针可能引用一个非动态分配的变量,所以如何知道这个指针是否引用动态变量

0 投票
4 回答
1229 浏览

c++ - 链表练习,我做错了什么?

大家好。我正在做一个涉及动态内存分配、指针、类和异常的链表练习。有人愿意批评它并告诉我在风格和我上面列出的主题方面我做错了什么以及我应该做得更好吗?

0 投票
5 回答
15060 浏览

c++ - strdup 的替代品

我正在为包含名称的书编写 C++ 类:

我不允许std::string在这个作业中使用。所以这里我使用strdup将参数名称的值复制到构造函数中的 nm 中:

是否有替代方法可以在不使用strdup但使用关键字的情况下实现相同的结果new

0 投票
3 回答
6420 浏览

c - 如何在C中读取无限个字符

如何在char*不指定大小的情况下将无限字符读入变量?

例如,假设我想读取可能也需要多行的员工的地址。

0 投票
3 回答
944 浏览

operating-system - 动态分配的内存在哪里?

我们知道,malloc()操作new从堆中动态分配内存,但是堆在哪里呢?每个进程是否在命名空间中都有自己的私有堆用于动态分配,或者操作系统是否有一个由所有进程共享的全局堆。更重要的是,我从一本教科书上读到,一旦发生内存泄漏,丢失的内存在下次重新启动计算机之前是无法重用的。这篇论文对吗?如果答案是肯定的,我们该如何解释呢?

感谢您的回复。

问候。

0 投票
5 回答
1314 浏览

c++ - C++新的内存分配碎片

我试图查看新分配器的行为以及它为什么不连续放置数据。

我的代码:

所以我用 char, int, ci 运行了这个。大多数分配是从最后一个固定长度,有时从一个可用块到另一个可用块的奇怪跳转。

sizeof(char) : 1
平均跳转: 64 字节

sizeof(int):4
平均跳跃:16

sizeof(ci): 8 (int 必须放在 4 字节对齐上)
平均跳转: 9

谁能解释为什么分配器会像这样分割内存?还有为什么 char 的跳转比 int 和包含 int 和 char 的结构大得多。