问题标签 [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 投票
3 回答
447 浏览

c++ - C++ 中的 Char * 重新分配

我需要在 C++ 中的“char *”中存储一定数量的数据,因为我想避免 std::string 在超过 max_size() 时耗尽内存。但是数据来自网络的数据块,所以我每次获取数据块时都需要使用重新分配。C++ 中的 char * 重新分配和连接有什么优雅的解决方案吗?

0 投票
4 回答
21221 浏览

linux - 如何在 Linux 下使用汇编和系统调用动态分配内存

我正在寻找一些在 Linux 下使用汇编语言并使用系统调用而不是 malloc 和朋友的动态内存分配的好的代码示例。

有哪些最简单但有效的方法来做到这一点?

在 Intel 386+ 计算机上。

0 投票
3 回答
386 浏览

c - 简单的动态内存分配错误

我相信您(专业人士)可以识别我的代码中的错误,我也将不胜感激对我的代码的任何其他评论。

顺便说一句,代码在我运行后崩溃。

提前致谢。

0 投票
5 回答
756 浏览

c++ - C++ 对象的构造函数

我有类 Person 如下:

现在我需要添加两个构造函数。一种不带参数,将字段值插入动态分配的资源。第二次采用由初始化列表初始化的 (char*, int) 参数。最后一部分是定义一个析构函数,显示有关销毁对象和重新分配动态分配的资源的信息。如何执行此任务?

这就是我已经拥有的:

0 投票
6 回答
299 浏览

c - 另一个动态内存分配错误

我正在尝试为多维数组(8 行,3 列)分配内存。

这是分配的代码(我确定错误对您来说很清楚)

当我引用这个时发生崩溃:

xxxx.exe 中 0x0135144d 处未处理的异常:0xC0000005:访问冲突写入位置 0xabababab。

这类主题有推荐的参考资料/读物吗?

谢谢。

0 投票
2 回答
5587 浏览

c++ - 小对象分配器

有人在大型项目中使用过 Andrei Alexandrescu 的 Modern C++ Design 中的 SmallObjectAllocator 吗?我想实现这个分配器,但在我的项目中使用它之前我需要一些关于它的意见。我做了一些测试,看起来速度很快,但是测试是在一个小的测试环境中进行的。我想知道当有很多小对象(如事件、智能指针等)时有多快以及它使用了多少额外内存。

0 投票
2 回答
342 浏览

c - 动态内存分配教材?

除了出现在 Wikipedia 的 ref 部分的(有些过时的)论文之外,您还知道哪些好的(教学)材料可以全面讨论 C 中的动态内存分配陷阱、技术、良好实践等?谢谢。

0 投票
2 回答
3807 浏览

windows - Windows 内存分配问题

我目前正在研究malloc()Windows 下的实现。但在我的研究中,我偶然发现了令我困惑的事情:

首先,我知道在 API 级别,Windows 主要使用HeapAlloc()andVirtualAlloc()调用来分配内存。我从这里收集到malloc()(包含在 CRT 中的 C 运行时)的 Microsoft 实现基本上要求HeapAlloc()块 > 480 字节,否则管理分配给小分配的特殊区域VirtualAlloc(),以防止碎片。

好吧,这一切都很好。但还有其他实现malloc(),例如nedmalloc,声称比微软的malloc.

这一切让我想知道一些事情:

  1. 为什么我们不能只调用HeapAlloc()小块?是否在碎片方面表现不佳(例如通过“首次拟合”而不是“最佳拟合”)?

    • 实际上,有什么方法可以知道各种 API 分配调用的幕后情况吗?那会很有帮助。
  2. 是什么让nedmalloc微软的速度如此之快malloc

  3. 从上面我得到的印象是HeapAlloc()/太慢了,以至于偶尔调用它们然后自己管理分配的内存VirtualAlloc()要快得多。malloc()这个假设是真的吗?还是malloc()因为碎片化而只需要“包装器”?人们会认为像这样的系统调用会很快——或者至少会考虑一些想法来提高它们的效率。

    • 如果是真的,为什么会这样?
  4. malloc平均而言,一个典型的调用(可能是已分配段数的函数)执行了多少(一个数量级)内存读/写?我会直观地说这是一个平均程序的几十个,对吗?

0 投票
1 回答
385 浏览

qt - 当 QList 变得太大时应用程序崩溃

我制作了一个应用程序,它必须在内存中存储大量数据以提高计算性能。

它是列表和对象的层次结构,其中顶部对象是. 加载数据时,会创建很多实例并将其添加到列表中。内存消耗增加,当涉及到 ~1.9Gb 时,程序崩溃。我的电脑 (Vista) 有 4Gb RAM,我已经在其他 RAM (XP) 较少的电脑上进行了测试,但它同时崩溃了。我不能使用超过 1.9Gb 的 RAM 吗?QList<myObject*>new myObject*

当加载较小的文件并且根据“Windows 任务管理器”的内存使用量为(例如)1.2Gb 时,我可以使用这些数据。但是,如果我想加载另一个文件,即使在调用delete所有对象并清除列表之后,也会从 1.2Gb 开始增长。为什么?
我尝试切换到QVector并调用squeeze(),但内存保持不变。我在这里阅读了关于 QLists 中动态内存分配的其他线程,但是在加载新文件之前真的没有办法重置内存吗?特别是因为它在 1.9Gb 之后崩溃;依次加载 3 个小文件,我就在那里。

非常感谢您的任何建议。

0 投票
2 回答
423 浏览

memory-management - 获取windows中最低的空闲虚拟内存地址

标题几乎说明了一切:有没有办法在 windows 下获得最低的空闲虚拟内存地址?我应该补充一点,我在程序开始时对这些信息感兴趣(在完成任何动态内存分配之前)。

为什么我需要它:尝试malloc在 Windows 下构建一个实现。如果不可能,我将不得不在VirtualAlloc()将 NULL 作为第一个参数时返回任何返回值。虽然您希望它做一些明智的事情,比如在可用的底部分配内存,但不能保证。