c++ - 为程序分配内存的最佳方式

标签 c++ memory-management

我目前正在研究一个代码,增量垃圾收集,这只是一个模拟。我的意思是,在程序中,用户将输入要分配的物理内存量,还将输入诸如 x = alloc(10MB) 之类的关键字,它希望我分配对象“x "10MB 的物理内存。所以我需要一个开始指针作为代码的结束指针。 我的疑问:分配此“物理内存”的最佳方法是什么?我遇到了 malloc 和 calloc,许多人建议除非必要,否则不要使用它。还有新的运营商。所以我想知道是否还有其他更好的方法。并且此物理内存将在整个过程中保持固定。 感谢您的帮助。

最佳答案

在 C++ 中,通常鼓励使用 C++ 标准库的集合类,例如 std::vector,而不是分配原始内存甚至使用原始指针。如果您正在为垃圾收集编写模拟,我可以想象您设计一个类来统一访问 GC 管理的内存,然后分配它们的 vector 。

但是,如果不是这种情况,您可以(尽管在 C++ 中,您真的不应该)使用 malloc()calloc () 如果您需要零初始化内存。

Also is there a way i can make another pointer point to the end address of the block.?

当然,使用指针运算。

T *ptr = malloc(sizeof(*ptr) * N_ELEMENTS);
T *endPastOne = ptr + N_ELEMENTS;

关于c++ - 为程序分配内存的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16615983/

相关文章:

linux - 内核中的 sk_buffs 数量是否有限制

c++ - Q_INTERFACES 宏的目的是什么?

c++ - 哪个对象更适合使用 b2EdgeShape 与 b2ChainShape 创建曲线?

c++ - C++ 中的 OpenGL 入门

Java从堆中取消分配一个对象

ios - 使用 Storyboard实例化的 Controller 的重新分配

java - Java VM 是否移动内存中的对象,如果是,如何移动?

c++ - 为什么这个三角形重新排序算法会导致随机连接?

c++ - 现代 C++ 中有命名参数吗?

iphone - 使用 ARC 重新初始化/重新分配对象