为什么.NET不喜欢这个C ++ / CLI模板函数?

时间:2010-03-03 18:28:33

标签: .net visual-studio templates c++-cli

在一个简单的vanilla WinForms应用程序(C ++ / CLI,设置为/ clr)中,我有以下模板函数,标记为“unmanaged”:

#pragma managed(push, off)
#include <string>
template< class c >
const c& test_alloc()
{
   static c test_alloc;
   return test_alloc;
}
#pragma managed(pop)

然后在main中,我在Application :: Run()之前使用它:

test_alloc<int>();          // OK
test_alloc<std::string>();  // Fails: _CrtIsValidHeapPointer(pUserData) 

static int test_alloc工作正常,但静态字符串test_alloc失败,“你正在破坏堆”错误:_CrtIsValidHeapPointer(pUserData)。谁能向我解释这里发生了什么?

当我尝试使用boost :: filesystem :: initial_path()时,问题实际上就出现了。

0 个答案:

没有答案