繁体   English   中英

如何在 MIPS 中释放堆 memory

[英]How to free the heap memory in MIPS

为了学习pourposes,我正在尝试在堆memory 中实现一个堆栈,当我推送一些东西时,我只需要执行系统调用sbrk,这很好。 但是当我继续进行弹出时,我可以检索我的值,但我无法释放分配的空间,有什么办法可以做到这一点?

sbrk 系统调用不接受负数,我已经尝试过了。

提前致谢

与 UNIX 中真正的sbrk不同,QtSpim/MARS 系统调用 #9 不支持将 memory 从堆返回到系统。

但是,您可以自己实现sbrk功能,因为它相当简单。 malloc / free会更复杂,涉及自由列表等,但这要简单得多。)

当然,您需要一个像真正的sbrk一样获取调整号的子例程,以及少量 state — 可能是两个词:UNIX 样式的sbrk地址和 MARS 样式的系统调用 #9 地址,或者其中一个或另一个和一个免费的计数。

释放 memory(负sbrk参数)仅意味着将 UNIX 样式的sbrk地址移回和/或增加空闲计数,否则什么也不做。

稍后的分配(正sbrk参数)在分配新堆空间时考虑间隙或空闲计数,并且仅在空闲计数变为 0 并且分配请求中还有更多字节时才增加底层 MARS 堆。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM