问题标签 [unsafe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1670 浏览

memory - sun.misc.Unsafe:如何从地址中获取字节

我听说有一种方法可以从内存中读取值(只要内存由 JVM 控制)。但是,例如,我如何从地址8E5203中获取字节?有一种方法叫做getBytes(long)。我可以用这个吗?

非常感谢!皮特

0 投票
1 回答
2093 浏览

c# - C# 中的结构泛型

请帮我解决这个问题:

我尝试定义这样的结构:

但我收到此错误:无法获取托管类型 sNodo 的地址、大小或声明指向托管类型 sNodo 的指针,

我该如何解决?我正在尝试使用动态内存创建一个“通用”堆栈。

感谢您的关注

0 投票
2 回答
1314 浏览

c# - 从非托管流中读取 - 不安全代码,IntPtr

Firefox (Gecko) 3.5 代码中公开了以下内容:

因此,我在我的小 .Net/C# 应用程序中,想要利用我从代码中其他地方返回的这个实例,但我无法确定如何处理该int Read(IntPtr aBuf, uint aCount)方法。

我想byte[]用从该方法收到的内容填充本地数组Read,但我不确定如何处理 IntPtr 或如何将其转换回托管字节数组。

任何提示/猜测/指针?(双关语不是故意的)

0 投票
6 回答
3232 浏览

c# - 解释这段 C# 代码: byte* p = (byte*) (void*) Scan0;

我从网上找到了我无法理解这一行的代码:-

Scan0 是System.IntPtr。 它是 C#.Net 的代码。请解释上面的行。

完整的代码如下。这是转换灰度图像的代码。

我了解所有代码,但只有这一行有问题。

0 投票
2 回答
557 浏览

c# - WPF 浏览器应用程序可以运行不安全的代码吗?

我正在编写一些绘制分形的软件,并让用户以交互方式探索它们。我目前在一个窗口化的 wpf 应用程序中有我的代码。我想进入一个浏览器托管的 wpf 应用程序,这样我就可以在我的网站上显示它们。问题是代码使用了一些“不安全”的代码来进行渲染。我正在使用 BitmapData 直接访问图像内存,而不是使用 GDI+ 的东西,因为它似乎要快一些。无论如何在 wpf 浏览器应用程序中运行不安全的代码?

0 投票
2 回答
1341 浏览

c# - 要调用需要 IntPtr 的方法,是使用 /unsafe 还是 Marshal.AllocHGlobal 更好?

我有一个类将在整个应用程序期间持续存在一些实例。这些对象都需要调用一个 dll 方法,该方法从现有的 float[] 缓冲区中附加数据,并将完整的数据集传递给一个接受 IntPtr(浮点数组)的 DLL 方法,每秒几次。将其作为非托管代码执行是否更好:

还是使用不安全的标签并修复会更好?

不必在编译器中使用“不安全”标签有什么好处吗?元帅级实际上是否“更安全”?这些方法中哪一种通常具有更好的性能?

_floats我倾向于前者,只是因为这样 GC在清理内存空间时不必担心(这可能非常大)。这是一个合理的担忧吗?建议是否取决于 ArraySize 的大小?

0 投票
2 回答
358 浏览

c# - 将指针(即 int[])传递给 DLL 时,“固定”真的能保证什么吗?

我尝试搜索这个但没有找到任何东西,但是当将 int[] 作为指针传递到本机 DLL 函数时,是否仍然存在 DLL 可以维护对指针的引用的危险,然后尝试在“固定”块终止后再次访问它?如果 GC 移动了您的数组,这不会导致内存访问错误吗?如果是这样,你如何解决这个问题?或者这是一个不太可能的情况?

0 投票
5 回答
3161 浏览

c# - C#:使用指针类型作为字段?

在 C# 中,可以声明具有指针类型成员的结构(或类),如下所示:

使用这种结构是否安全(错误..暂时忽略那个具有讽刺意味的小unsafe标志..)?我的意思是长期存储在堆上。据我了解,GC 可以自由移动事物,并且在更新对已移动事物的引用时,它是否也更新指针?我猜不,这会使这种结构非常不安全,对吧?

我敢肯定有更好的替代方法来做到这一点,但称之为病态的好奇心。

编辑:似乎有些混乱。我知道这不是一个很好的结构,我纯粹想知道这是否是一个安全的结构,即:是否保证指针始终指向您最初指向的任何内容?

原始的 C 代码用于在没有递归的情况下遍历树(深度优先),其中树存储在数组中。然后通过增加一个指针来遍历该数组,除非满足某个条件,否则将指针设置为 NextNode,继续遍历。当然,在 C# 中也可以通过以下方式完成:

其中int是下一个节点的数组中的索引。但是出于性能原因,我最终还是会摆弄指针和fixed数组以避免边界检查,而原始的 C 代码似乎更自然。

0 投票
15 回答
443077 浏览

java - 如何在 Java 中使用指针?

我知道 Java 没有指针,但我听说可以使用指针创建 Java 程序,并且这可以由少数 Java 专家来完成。这是真的吗?

0 投票
1 回答
523 浏览

c# - 使用 StringBuilder 的不安全代码和固定语句

我想知道如何将 String 或 StringBuilder 传递给通过参数输出字符串的 C 函数。我找到了一个很好的答案

从 C# 调用非托管函数:我应该传递 StringBuilder 还是使用不安全的代码?

但我有一个疑问。任何人都可以向我解释为什么垃圾收集器在导入函数执行期间不重新定位(托管)StringBuilder 实例?