我目前正在研究一个代码,增量垃圾收集,这只是一个模拟。我的意思是,在程序中,用户将输入要分配的物理内存量,还将输入诸如 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/