c#调用VC中不安全代码的问题。请高人指点!急用!!!

qyly 2004-12-14 12:02:50
char* mychar = new char[2048];
BITMAPINFO mybitmap = new BITMAPINFO;//BITMAPINFO是VC中定义的一个存储BITBMP信息的一个结构。
mybitmap = (BITMAPINFO*)mychar ;

实际上是让mybitmap和mychar指向相同的地址请问上面的语句我用C#怎么实现?。

unsafe代码内存回收怎么办请推荐篇文章,我用C#调用完VC的FillMemory函数和对位图处理的函数后出现不可知内存错误(某位置不让Written)!谢谢!
...全文
133 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qyly 2004-12-19
  • 打赏
  • 举报
回复
谢谢ggl165(ggl165) !!!

又出现新问题,程序运行几分钟后,出现SEHException(结构错误)要么出现Nullexception(未引用实例)这可怎么办呀?无法指向相应的代码呀!!!
请问是什么原因引起的呢?结构中这句public IntPtr bmiColors;用指针代结构可以么?
ggl165 2004-12-16
  • 打赏
  • 举报
回复
1.首先在msdn中查对应的结构,
2。定义[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
public class BITMAPINFOHEADER
{
[FieldOffset(0)]
public Int32 biSize;
[FieldOffset(4)]
public Int32 biWidth;
[FieldOffset(8)]
public Int32 biHeight;
[FieldOffset(12)]
public Int16 biPlanes;
[FieldOffset(14)]
public Int16 biBitCount;
[FieldOffset(16)]
public Int32 biCompression;
[FieldOffset(20)]
public Int32 biSizeImage;
[FieldOffset(24)]
public Int32 biXPelsPerMeter;
[FieldOffset(28)]
public Int32 biYPelsPerMeter;
[FieldOffset(32)]
public Int32 biClrUsed;
[FieldOffset(36)]
public Int32 biClrImportant;
}

[StructLayout(LayoutKind.Sequential)]
public class BITMAPINFO
{
public BITMAPINFOHEADER bmiHeader;
public IntPtr bmiColors;
}

3。BITMAPINFO mybitmap = (BITMAPINFO)Marshal.PtrToStructure(pDib,
typeof(BITMAPINFO)); //pDib是对应的地址指针
Lastcsdner 2004-12-16
  • 打赏
  • 举报
回复
这样做是不行的,必须在C#中声明同样的结构。C++中如果申请了内存,必须再写一个函数显式的释放。
tongcheng 2004-12-16
  • 打赏
  • 举报
回复
没调用过
GZ
qyly 2004-12-16
  • 打赏
  • 举报
回复
请高人们快点进来吧!!!
cs920 2004-12-14
  • 打赏
  • 举报
回复
帮你顶了~

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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