|
|
1
6
如果希望测试运行以相同的堆状态开始,可以在fork()创建的自己的进程中运行它们。 |
|
|
2
3
我认为有一个简单的解决方案可以解决你的问题——你可以将外部循环移出你的应用程序,进入一个shell脚本或另一个应用程序,然后通过命令行将(k)(和任何其他)参数传递给基准应用程序——这样你就可以确保所有的执行都有类似的启动条件。 |
|
|
3
1
没有办法使用标准C++来实现自己的堆管理的新版本和删除版本。另一种选择不是使用数组,而是使用std::vectors——然后可以使用自定义分配器进行堆管理。 |
|
|
4
1
你什么意思?C中没有垃圾收集,当然也没有压缩。 要“重置堆的状态”,必须对每个malloc()调用调用free()。正如我理解你的代码,你已经做到了。 压缩几乎是不可能的。不同于高级语言(如Java或C语言),不能更改对象的地址,因为任何指向它的指针都会失效。 |
|
|
5
0
没有自动的方法,您必须手动删除堆中的任何内容才能返回到(1)的状态。 |
|
|
6
0
它们是一些垃圾收集代码。看看perl/python/lua/ruby/mono/parrot/boehm/pike/slate/self/io等。 还可以查看alloca()和动态数组。还可以考虑使用结构来实现自己的析构函数,或者在函数离开作用域时使用gcc属性来自由调用。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |