从system :: String转换为std :: string,我使用下面的代码:
IntPtr p = Marshal::StringToHGlobalAnsi(PORT); string newString = static_cast<char*>(p.topointer()); Marshal::FreeHGlobal(p);
但是,我得到的代码使用的地方
IntPtr p = Marshal::StringToHGlobalAnsi(PORT); char* newString = static_cast<char*>(p.topointer()); Marshal::FreeHGlobal(p);
由于某些原因,我得到垃圾在newString如果我做char *版本。 任何人都知道为什么会发生?
谢谢。
如何从.NET客户端应用程序加载URL
如何使用WinAPI读取MessageBox文本
有没有任何方法来调用一个Cortana响应没有用户input?
如何使用fsharpi(fsi)和mono的stdinpipe道
使用.NET监视windows 7中的声卡输出
在附加到NotifyIcon的ContextMenu中延迟单击事件
如何创build无限的canvas效果?
我有什么select使用C#在windows Server上添加和删除IPSec策略?
在windows应用程序中是否有任何基于SSRS的商业产品可以提供更丰富的用户体验?
我们可以从共享path运行batch file(.bat)吗?
std::string版本的工作原因是因为它立即创建char*值的私人拷贝。 这个私人副本不受后来的FreeHGlobal影响。
char*版本被分配一个指向内存的指针,然后在下一行释放它。 FreeHGlobal命令执行的时候是无效的。
总结以上是内存溢出为你收集整理的从system :: String转换为std :: string全部内容,希望文章能够帮你解决从system :: String转换为std :: string所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)