托管C++和非托管内存的拷贝问题

zhui22222 2012-04-06 03:51:08
如何将int*(长度100) 变成array<int>^?
...全文
294 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
足球中国 2012-04-07
  • 打赏
  • 举报
回复
int * pint=0;
int [] is=new int[100];
fix(int * pis=&is)
{
pis=pint;
}

你试试。
threenewbee 2012-04-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
Marshal::Copy
[/Quote]
正解。

array<byte>^ array = gcnew array<int>(100); 
System::Runtime::InteropServices::Marshal::Copy(IntPtr((void *)p), array, 0, 100);
真相重于对错 2012-04-06
  • 打赏
  • 举报
回复
Marshal::Copy
zhui22222 2012-04-06
  • 打赏
  • 举报
回复
这个好像有点将指针转化为数组的意思
如果已知一段内存存放100个int,指针为p,
如何得到一个int[100]的变量?
楼上这个在哪体现数组的长度?
传递正能量 2012-04-06
  • 打赏
  • 举报
回复
强制转换应该就可以
?=(array<int>) p;

7,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧