提问人:PluginPenguin 提问时间:4/30/2020 更新时间:5/4/2020 访问量:139
通过 _malloca 的堆栈分配是否触发了通过 _CrtSetAllocHook 设置的 alloc 钩子
Does a stack allocation through _malloca trigger an alloc hook set through _CrtSetAllocHook
问:
对于实时音频信号处理应用程序,我们希望确保不会从实时线程中执行堆内存分配。作为开发过程中使用的内部调试工具,我们设置了一个堆分配钩子函数,通过该函数检查分配线程的线程 ID,并断言它是否为实时线程。_CrtSetAllocHook
在代码库的某些部分,我们现在使用 / 临时创建 400 字节<堆栈缓冲区。根据 Microsoft 文档,当分配的字节数大于 定义的值时,执行堆分配而不是堆栈分配。 当前设置为 1024。_malloca
_freea
_malloca
_ALLOCA_S_THRESHOLD
_ALLOCA_S_THRESHOLD
现在,当在阈值以下分配小堆栈缓冲区时,我们会遇到堆分配断言,例如,如果不应该发生堆分配。如果决定执行堆栈分配,我找不到任何信息,如果通过设置的分配钩子也被触发,但我感觉可能是这种情况。_malloca
_CrtSetAllocHook
_malloca
所以第一个问题:有没有人在这里找到任何关于这种行为的官方文件? 第二个问题:如果像我假设的那样为堆栈和堆分配调用了 alloc 钩子,那么我们应该如何确定执行哪种分配只是为了触发堆分配的断言?
答: 暂无答案
上一个:堆栈分配的类类型。为什么两个 ID 实例的地址相同?
下一个:无分配枚举和处理
评论