为程序分配内存的最佳方法

时间:2013-05-17 18:49:55

标签: c++ memory-management

我目前正在研究代码,增量垃圾收集,这只是一个模拟。我的意思是,在程序中,用户将输入要分配的物理内存量,并且还将输入像x = alloc(10MB)这样的关键字,这些关键字要求我分配对象“x”10MB的物理内存。所以我需要一个开始指针作为代码的结束指针。 我怀疑:分配这种“物理记忆”的最佳方法是什么?我遇到了malloc和calloc,许多人建议不要使用它,除非必要。还有新的运营商。所以我想知道是否还有其他更好的方法。这个物理内存将在整个过程中保持不变。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

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

但是,如果不是这种情况,那么可以(尽管在C ++中,你真的不应该)使用malloc(),或calloc()如果你需要零 - 初始化记忆。

  

还有一种方法可以让另一个指针指向块的结束地址。?

当然,使用指针算法。

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