Eri*_*ert 11
更新: 这个问题是我2012年12月11日博客的主题.谢谢你这个好问题!
试图寻找这个,但没有找到任何东西
当您对语言有疑问时,请考虑阅读语言规范.
当将int []作为指针传递给本机DLL函数时,DLL是否仍然存在对指针的引用的危险,然后在"固定"块终止后再次尝试访问它?
是的.正如语言规范所述:
程序员有责任确保由固定语句创建的指针不会超出这些语句的执行.例如,当固定语句创建的指针传递给外部API时,程序员有责任确保API不保留这些指针的内存.
如果GC移动了您的阵列,这不会导致内存访问错误吗?
是!
如果是这样,你怎么解决这个问题?
你没有.正如语言规范所述,您必须永远不要这样做.既然你永远不会这样做,你就不必找到办法绕过它.这就像是在问"我如何从致命的自我中恢复过来?" 你没有 - 如果你不想最终死亡,那么一个好的规则就是"不要在第一时间向自己开枪".
或者这是不太可能的情况?
您是否可能编写调用违反托管代码规则的DLL的C#程序?我不知道!你告诉我 - 你觉得你可能会想做什么?
| 归档时间: |
|
| 查看次数: |
347 次 |
| 最近记录: |