标题几乎说明了。我正在编写一个算法(现在将其移植到nasm中),需要分配大量(超过8gb)的ram(作为cpu使用的严格权衡)。在每次迭代中,它都将一个int存储到堆栈中(用于输出和以后的使用)。然后,它可以定期释放一组值,但只能从堆栈的底部释放。这可以通过简单地减少堆栈基数(rbp)来完成吗?
答案 0 :(得分:0)
堆栈是堆栈。您可以在顶部推送和弹出值,但仅此而已。你不能以任何其他方式从中取消分配任何东西。
更改RBP不会执行任何操作,它只是用于当前堆栈帧的辅助寄存器。 RSP显示堆栈的当前顶部,并且移动该更改将在堆栈内存储或检索下一个值的位置。因此,如果需要,您可以从顶部删除一堆值,但不能从底部删除。
如果您需要临时存储值并稍后释放它们,那么循环缓冲区或常规内存块将更适合它。