问题标签 [unsafe-pointers]

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 回答
160 浏览

c# - 如何改进此代码并使其安全使用?

我已经拿起了这段代码,但据我所知,这是不安全的代码,在 WP7 中可能无法使用。有没有人知道如何让这段代码安全使用,也许是 try/catch?

0 投票
1 回答
3360 浏览

pointers - 在 Go 中将 **T 转换为 *unsafe.Pointer

如何将类型变量转换**T*unsafe.Pointer?

下面的示例将给出编译错误:

无法将 &ptr (type **s) 转换为 type *unsafe.Pointer

如果我切换(*unsafe.Pointer)(&ptr)&unsafe.Pointer(ptr),我会得到这个编译错误:

不能取 unsafe.Pointer(ptr) 的地址

附言。我选择做一个例子,sync/atomic因为这是你实际上必须进行这种转换的一种情况。

编辑

一种不正确的解决方案是使用临时变量:

在编译时,CAS 只会交换存储在up而不是ptr. 正如 zeebo@#go-nuts 所指出的,这不是预期的结果。

0 投票
1 回答
138 浏览

c# - 使用 LayoutKind.Explicit 来绕过使用“不安全”指针是否合法?

我有使用指针对数据块进行异或的代码,这很快,但我想摆脱对程序集的“不安全”要求。如果我将其更改为使用 LayoutKind.Explicit 并在“byte []”之上覆盖“ulong []”,我基本上会做与指针相同的事情,但它似乎同样危险。这两者的主要区别在于“安全”版本的速度大约是“不安全”版本的 1/2。

这是解决“不安全”程序集的合法方式,还是一次访问 byte[] 1 个字节是以安全方式执行此操作的唯一合法方式?

0 投票
1 回答
86 浏览

objective-c - Cocoa 静态库 – unsafe_unretained 属性

我正在创建我的第一个静态 Cocoa 库,与使用 Cocoa 应用程序时相比,我注意到一件奇怪的事情:当我将 IBOUlet 添加到 xib 文件中的视图时,该属性默认设置为 unsafe_unretained 而不是弱。

将 unsafe_unretained 更改为 weak 有什么危害吗?

谢谢,迈克尔·克努森

0 投票
2 回答
3220 浏览

go - Go:将 unsafe.Pointer 转换为函数指针,反之亦然

在 C 中,您可以将函数指针放入 void 指针数组并将它们转换回任何类型的函数指针:

我需要在 Go 中做同样的事情,使用 unsafe.Pointers。问题是:

  • Go 函数指针可以转换为 unsafe.Pointer 吗?
  • unsafe.Pointer 可以转换为与原始函数指针不同(或相同)类型的 Go 函数指针吗?

(问题在于为什么或是否需要这样做;在给定的情况下,可以使用错误的参数集调用函数并误解返回值,因为调用者和被调用者能够处理这个问题。 )

0 投票
2 回答
525 浏览

c# - 不安全代码中的错误,使用指针读取内存

我在内存中有一个二进制序列化对象,我想通过在 C# 中使用指针(不安全代码)从内存中读取它。请查看以下从内存流中读取的函数。

在此return *(Results*)packet;语句中,我得到一个编译时异常“无法获取地址、获取大小或声明指向托管类型结果的指针”

这是我的结构

根据我的理解,我的结构的所有属性都是 blittable 属性,那么为什么我会收到这个错误,如果我需要在我的结构中使用 char[] 该怎么办?

EDIT-1 让我进一步解释(请注意,这些对象是模拟的)......

背景:我有一个Results对象数组,我使用二进制序列化对它们进行了序列化。现在,在我程序的后期阶段,我需要尽快反序列化内存中的数据,因为数据量非常大。所以我在尝试,不安全的代码如何帮助我。

可以说,如果我的结构不包含public char[] Product;,我会以相当好的速度取回我的数据。但是使用 char[] 它给了我错误(编译器应该这样做)。我正在寻找在这种情况下与 char[] 一起使用的解决方案。

0 投票
1 回答
3985 浏览

swift - 'inout String' 不能转换为 'UnsafePointer'

我正在使用一个需要UnsafePointer<String>.

如何UnsafePointer<String>从字符串中获取一个?

尝试&someString给了我错误:

0 投票
1 回答
1829 浏览

null - Swift:gettimeofday 和不安全指针

Swift 中的代码

Objective C 中的代码

我一直在尝试查找有关 UnsafePointer 的更多信息以及传递 NULL 的替代方法,但我可能会找错树。

如果有人知道如何让等价代码在 Swift 中运行,那就太好了。如果对发生的事情有一个很好的解释,那就更好了!

0 投票
1 回答
1393 浏览

pointers - 在 Swift 中,如何确定两个 UnsafePointer 是否引用相同的内存?

我有两个类型为“UnsafePointer<Float>”的变量,它们应该指向两个 C 浮点数组。

我已经知道如何访问它们指向的内存的值。

我不知道该怎么做,是确定它们是否都引用相同的内存(即:都指向相同的地址)。

如何检查两个 UnsafePointer 存储的内存地址是否相同?

0 投票
1 回答
899 浏览

objective-c - 我无法快速从 unsafeMutablePointer<32> 获取整数值

我在我的项目中同时使用了 swift 和 obj-c 类。

我在 obj-c 头文件中声明了这一点。

我想在我的 swift 类中使用这个 obj-c 代码:

我像这样将它转换为swift:

但是,它给了我一个错误,上面写着“UnsafeMutablePointer < Int32>”不能转换为“Int32”

我也试过这个:

但是这一次它给了我一个关于使用 IntegerType 的错误。我不知道我该怎么办。我是快速和客观 c 的初学者。感谢您的任何帮助。