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