【发布时间】:2017-07-22 17:25:57
【问题描述】:
我有一个本地 c++ 应用程序,我从中调用 .net dll(外部函数),我看到当我调用托管时,它分配了为使用 /stack 链接器选项指定的线程分配的完整堆栈,但是如果我只进行本机函数调用,它会分配计算所需的堆栈。
以下是我的观察
将 /stack 选项设置为 80MB,并调用托管外部函数。
将 /stack 选项设置为 80MB,并调用本机内部函数。
当我们调用 .Net 外部函数时,还有一些额外的线程与 GC 相关。与我们不调用 .Net 外部函数的情况相比,我们应用程序中的线程也使用了更多的堆栈空间。我不确定托管堆栈是否位于本机堆栈之上。有人可以帮助我理解为什么当我们调用 .Net 外部函数以及混合模式应用程序中的内存管理时会为线程分配完整堆栈。
【问题讨论】:
标签: c++ .net memory memory-management stack-memory