【发布时间】:2012-01-11 18:23:55
【问题描述】:
我目前正在使用 Visual Studio 2010。这是我第一次为 C++ 类编写包装器。 C++ 中的类如下所示:
bool exampleCode(char* arrayOfStrings[], int number, char* regularString)
我创建的头文件看起来像:
bool exampleCode(array<String^>^ arrayOfStrings, int number, String^ regularString)
.cpp 文件类看起来像:
bool exampleCode(array<String^>^ arrayOfStrings, int number, System::String^ regularString)
我想出了如何编组 regularString 数据,但我不确定如何将 String 数组转换为 char*[]。任何帮助将不胜感激。
【问题讨论】:
-
本机函数是清理它传递的内存还是将其留给调用者?
-
我相信本机函数会清理它传递的内存,但我不是 100%,因为我是 C++/CLI 编程新手。
-
好的,那么接下来的问题是如何原生函数清理内存?
free?delete[]?CoTaskMemFree?LocalFree?GlobalFree? -
其实没关系,native函数不会删除内存。看来这是由调用者决定的。对此感到抱歉。
-
我发布答案之前的最后澄清:您是否肯定
exampleCode接受char*参数而不是const char*/char const*参数?const的可能存在极大地改变了答案。此外,如果const真的不存在,那么本机函数是否可以修改其参数,或者假定不变性?
标签: .net visual-studio-2010 visual-c++ c++-cli wrapper