【发布时间】:2017-04-28 22:11:59
【问题描述】:
是否存在仅使用ntdll.dll 的 API 调用或任何其他类似方式在堆栈上分配内存?
我知道alloca() 会这样做,但我不能使用它,因为我只能使用来自ntdll.dll 的函数。
谢谢!
【问题讨论】:
-
没有这个功能。您可以轻松地自己编写。
-
操作系统不提供堆栈分配,这是每个用户功能在其序言中所做的事情。你的编译器应该将
alloca()翻译成序言中的相同指令,不需要函数调用。如果没有,请查看内联汇编。 -
@DavidHeffernan - 存在,你错了。
-
@RbMm:
_alloca_probe()或__chkstk()可以和栈上分配一起使用,但它不做栈分配。 -
如果您解释为什么“只能使用来自
ntdll.dll的函数”,您可能会得到更好的答案。我至少能想到两个你可能需要这样做的充分理由——但它们都涉及做只有微软员工才能正确完成所有必要信息的事情,如果你在微软工作,你就不会问这个问题在这里。
标签: c winapi stack allocation ntdll