c++ - C++中增量垃圾收集模拟的内存分配

标签 c++ garbage-collection

我需要用 C++ 或 Java 模拟增量垃圾收集算法。基于此我产生了疑问。

作为输入(来自键盘的stdin),我将被要求为此代码分配一些内存。语法为:

x = alloc(128KB);

我的问题:使用 malloc 进行分配可以吗?或者还有其他分配内存的方法吗?我有这个疑问,因为分配的大小可以达到 GB,因此我认为使用 malloc 可能不是一个好主意。

最佳答案

首先,如果你想禁止巨大的内存分配,只需检查用户输入的值,但我不确定你认为多大的内存才是巨大的内存。我想你不用担心这个,因为如果内存分配失败,malloc和calloc将返回一个NULL指针。

其次,您还可以在这种情况下使用“calloc”。

void calloc(size_t num, size_t size);

“num”是分配的平均元素数,“size”当然是元素的大小。下面的代码具有相同的结果。

ar = (int *)malloc(5 * sizeof(int));
ar = (int *)calloc(5, sizeof(int));

但是,如果您选择“calloc”,您可以更逻辑地管理您的代码,因为您可以按单位和计数划分内存量。 另外,如果您使用“calloc”,则不需要使用 memset 将内存值设置为零。 'calloc' 自动将内存值设置为零。

希望这篇文章可以帮助到您。

关于c++ - C++中增量垃圾收集模拟的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16474393/

相关文章:

c++ - C函数指针参数打印问题

G1 上的 Java 7 (JDK 7) 垃圾收集和文档

java - 帮助理解启用并行 GC 时抛出 OutOfMemoryError 的情况

c++ - 快速读取文件

c++ - 什么时候在cpp中调用复制构造函数?

c++ - 输入 SpinBox 时点击默认的 QPushButton

c++ - 在类中初始化动态内存数组

Java : "GC Overhead limit exceeded" despite plenty of memory to allocate available

java - 如何真正对 Java 应用程序的内存使用情况进行基准测试

c# - 我的 BackgroundWorker 实例何时会被垃圾回收