我目前正在编写一个代码,增量垃圾收集,这只是一个模拟。我的意思是,在程序中,用户将输入要分配的物理内存量,并且还将输入关键字x = alloc(10MB)
,例如希望我为对象“x”分配 10MB 的物理内存。所以我需要一个开始指针作为代码的结束指针。我的疑问:分配此“物理内存”的最佳方法是什么?我遇到了 malloc 和 calloc ,许多人建议除非必要,否则不要使用它。还有新的运营商。所以我想知道是否还有其他更好的方法。而这个物理内存将在整个过程中保持不变。任何帮助表示赞赏。
问问题
146 次
1 回答
1
在 C++ 中,通常鼓励使用 C++ 标准库的集合类,而不是分配原始内存甚至使用原始指针,例如std::vector
. 如果您正在编写垃圾收集的模拟,我可以想象您设计一个类来统一访问 GC 管理的内存,然后分配它们的向量。
但是,如果不是这种情况,您可以(尽管在 C++ 中,您真的不应该)使用malloc()
,或者calloc()
如果您需要零初始化内存。
还有一种方法可以让另一个指针指向块的结束地址。?
当然,使用指针算术。
T *ptr = malloc(sizeof(*ptr) * N_ELEMENTS);
T *endPastOne = ptr + N_ELEMENTS;
于 2013-05-17T19:07:55.203 回答