![]() |
1
3
使用
|
![]() |
2
3
编辑:我没有意识到这是一个API函数。不能声明返回结构的函数。p/invoke封送拆收器将使用cotaskmemfree()释放结构的内存。不起作用,它没有用cotaskmemalloc()分配。 XP和2003中的堆管理器可以原谅,它只是忽略了错误的发布请求。但不是Vista和2008中的程序,它会轰炸程序,因为它显然错误地使用了内存。重要的是,这些记忆恶作剧都是安全问题。 是的,通过将返回类型声明为intptr,可以避免p/invoke封送拆收器释放内存。这是适当的,API函数真的 做 返回指针,而不是结构。Marshal.ptrtoStructure需要将指向结构封送到托管结构。 安全API一般都是这样麻烦的。安全API将指针返回到内部内核安全结构的概念确实让人有点困惑… |
![]() |
leahsaif · 未连接使用Java的映射网络驱动器 7 年前 |
![]() |
Renaro Santos · 在Windows服务器上创建SVN用户 10 年前 |
![]() |
tuespetre · 应用程序池回收后MVC路由丢失(更新标题3/3/14) 11 年前 |
![]() |
ETFairfax · 无法加载DLL“mqrt.DLL” 11 年前 |