用malloc()强制垃圾收集/压缩

Man*_*uel 4 c++ memory heap malloc memory-management

我有一个C++程序,可以在不同长度的输入数组上对各种算法进行基准测试.它看起来或多或少像这样:

# (1)
for k in range(4..20):
  # (2)
  input = generate 2**k random points
  for variant in variants:
    benchmark the following call
    run variant on input array
  # (3)
Run Code Online (Sandbox Code Playgroud)

是否可以将(2)处的整个堆管理重置为它在(1)处的状态?在程序期间分配的堆上分配的所有内存都保证在(3)处被释放.

我在Linux上使用g ++ 4.3.

编辑:我知道C/C++中没有真正的垃圾收集.我想强制内存分配加入它在(2)的空闲列表中的相邻空块内存.

jpa*_*cek 6

如果希望测试运行以相同的堆状态启动,则可以在fork()创建的自己的进程中运行它们.