在linux(或POSIX)中,函数类似于win32 mem api
我正在windows上编写解释语言,我使用在linux(或POSIX)中,函数类似于win32 mem api,linux,heap,posix,virtual-memory,Linux,Heap,Posix,Virtual Memory,我正在windows上编写解释语言,我使用PAGE\u GUARD实现堆栈和HeapCreate/HeapAlloc动态分配我的语言 也许我需要将我的lang移植到其他操作系统。。那么,在linux(或POSIX标准..)中,什么与这些win32 api相似?(我希望它们在使用上不会有太大的不同.) 好的,如果您不了解这些win32 API,请参见下面的内容: HeapCreate-简单。创建新堆: void *mem = malloc(123); // alloc from default
PAGE\u GUARD
实现堆栈和HeapCreate
/HeapAlloc
动态分配我的语言
也许我需要将我的lang移植到其他操作系统。。那么,在linux(或POSIX标准..)中,什么与这些win32 api相似?(我希望它们在使用上不会有太大的不同.)
好的,如果您不了解这些win32 API,请参见下面的内容:
HeapCreate
-简单。创建新堆:
void *mem = malloc(123); // alloc from default heap
HANDLE hHeap = HeapCreate(...); // create a new heap
void *mem2 = HeapAlloc(hHeap, some_flag, 123); // alloc from new heap
PAGE\u-GUARD
-位复杂;它用于实现堆栈。例如,有一个最大大小为5页的堆栈。为了节省内存,我只分配一页,只“保留”4页的虚拟内存地址
---------
| alloc |
---------
|reserve|
---------
|reserve|
---------
|reserve|
---------
|reserve|
---------
当堆栈的第一页被完全使用,并且程序将要使用更多堆栈时,就会发生访问冲突。然后,我“提交”第二页并继续程序
PAGE\u-GUARD
就是这样做的助手。(在win95中,没有页面保护,因此win95在没有此帮助程序的情况下执行)如果我提前提交并将第二个页面标记为“保护”,并且程序使用更多堆栈,则会发生保护异常,操作系统会自动取消标记页面。我只需提交并标记下一页。阅读。不要在Linux中为您知道或想要的Win32的每个功能寻找完全相同的功能。学习用Linux术语进行本机思考。学习与你相似的东西(参见或找到一些)
是的,Posix或Linux与Windows是非常不同的,特别是它们的概念,等等
你可能想要和;我根本不知道Windows(所以我不知道HeapCreate
做什么)
也许使用跨平台工具包的底层(例如,QtCore
…)或(来自Gtk…)会对您有所帮助
Linux通常是可用的(但您可以使用其他一些,例如,它在IMHO中非常可读)。中列出并由实施的It用途(特别是,通常在上面构建…)
如果对你有帮助的话,养成研究自由软件源代码的习惯
mmap
和mprotect
似乎就是我发现的,谢谢!顺便说一句,没有办法创建新堆吗?那么我需要实现堆吗?哦..我不知道你叫什么堆。仅供参考,malloc
正在使用mmap
,您可以研究或改进它的源代码(因为它是免费软件)。还感谢您推荐一本好书,但似乎没有我语言的翻译版本!我很难过。。