C# 关于fixed关键字..用过的帮帮忙啊

2017-08-10 19:05 出处:360java.com 作者:360java  阅读()
MSDN让的意思是,不希望GC回收某对象的时候,就用fixed把它固定着... 我遇到一种情况,就是程序需要不断读卡(死循环),读卡是调用一个非托管的DLL(C)写的. 调用这个DLL的读卡方法的

MSDN让的意思是,不希望GC回收某对象的时候,就用fixed把它固定着...

 

我遇到一种情况,就是程序需要不断读卡(死循环),读卡是调用一个非托管的DLL(C++)写的.

 

调用这个DLL的读卡方法的时候,读到卡就返回卡号,没有就返回null,每3秒读一次..

 

问题来了,返回的卡号或null会给C#的某变量,但是GC过一段时间回去回收一次内存,当刚刚回收到外部DLL返回的东西那块内存时,程序就挂了..这是同事告诉我程序挂的原因.

 

大家认为是这个原因吗?fixed关键字是不是用于这样的情况 ?把那个接收卡号的string变量定住?可是定的时候会编译不了..下边是个例子中的图..

 

 

这个fixed到底用在什么情况?具体怎么用啊?我找了MSDN,百度..花了2天时间也没弄清楚..求高手帮忙!谢谢了.

< >
最佳答案

fixed(char* p

嗯,换成char就可以了,非常感谢,请问自定义的类型是不是不能用指针呢?

比如 一个类A

A a=new A();

fixed(A *p=a){}

fixed(A *p=&a){}

这2种写法都不对..

@hexllo: 不行。

分享到:
本文标签: .NET技术, C#, fixed, 指针

相关文章

发表评论(共条评论)愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

Copyright (C) java学习 360java 360java.com, All Rights Reserved.

苏ICP备16022210号