7得票2回答
将Rust中的Vec<String>传递到C中的char**

我一直在尝试用Rust编写一个可以直接链接到libc库的shell。我使用了一个Vec&lt;String&gt;来保存要传递给execvp()的参数,但似乎我的转换为char **并不成功。在执行时,所有参数都变成了空字符串。 以下是涉及到的代码片段。 fn safe_execvp(pa...

8得票2回答
在不安全代码中,将指针赋值为null和0之间有什么区别吗?

这可能看起来很奇怪,但在C语言中,(size_t)(void*)0 == 0不能被语言规范保证。编译器允许使用任何值作为null(尽管它们几乎总是使用0)。 在C#中,您可以在不安全代码中将null或(T*)0分配给指针。 有什么区别吗? (long)(void*)0 == 0是否保证?...

9得票1回答
std::ptr::write是否会传递它写入的字节的“未初始化状态”?

我正在开发一个库,帮助在 FFI 边界上传输适合指针大小 int 的类型。假设我有这样一个结构体: use std::mem::{size_of, align_of}; struct PaddingDemo { data: u8, force_pad: [usize; 0]...

25得票10回答
哪个更快 - C#的不安全代码还是纯粹的C++?

我正在编写一个图像处理程序,用于实时处理视频帧。这是使用Emgu.CV库(C#)封装OpenCV库dll(非托管C++)的C#代码。现在我必须编写自己的特殊算法,并且它需要尽可能快。 哪种方式实现算法速度更快? 在C#中编写“unsafe”函数 将该函数添加到OpenCV库中,并通过Em...

14得票4回答
如何在Rust中将一个u8缓冲区转换为结构体?

我有一个大小未知的字节缓冲区,并且我想创建一个指向缓冲区开头内存的本地结构变量。按照在C语言中的做法,我在Rust中尝试了很多不同的方法,但一直遇到错误。这是我最新的尝试: use std::mem::{size_of, transmute}; #[repr(C, packed)] str...

54得票3回答
错误 lnk2026:模块对于safeseh图像不安全

在构建一个Visual C++示例项目时,我遇到了这个错误。 首先,我下载了三个示例项目,它们都解决同一个问题:打印出所有小于N的质数(您可能了解这些示例项目?)。我成功地构建了纯C项目,没有任何问题。但是,当我尝试构建基于汇编的项目时,就会出现这个错误。 谢谢。

10得票1回答
如何安全地将 Vec<f64> 重新解释为一半大小的 Vec<num_complex::Complex<f64>>?

我有一些复数数据,由外部C库(不希望更改)填充到一个 Vec&lt;f64&gt; 中,形式为 [i_0_real, i_0_imag, i_1_real, i_1_imag, ...],该 Vec&lt;f64&gt; 似乎具有与 Vec&lt;num_complex::Complex&lt...

11得票2回答
为什么Python的多进程管道不安全?

当有多个发送器和接收器时,我不明白为什么说Pipes是不安全的。 如果是这种情况,以下代码如何转换为使用Queues的代码?Queues在关闭时不会抛出EOFError异常,因此我的进程无法停止。我应该无限发送“毒药”消息来告诉它们停止(这样,我确信所有进程至少接收到一条毒药消息)吗? 我...

11得票2回答
什么是Haskell中的不安全函数?

我认为不安全的函数是指一个函数声称它将返回某种类型的值,但实际上它可能会抛出异常并结束执行,因此根本没有返回任何值,但我不确定。 或者说不安全的函数是指可以返回与签名中声明的类型不同的值的函数吗?这不是一种弱类型函数吗? 在Haskell中,弱类型和不安全是否是同义词? 这可能是一个愚蠢...

9得票1回答
如何使用关键字fixed在C#中固定整个数组

下面示例中的代码 fixed (int* pArray = &amp;array[0]) 是否将整个数组固定,还是只固定了 array[0]? 答案: 只固定了 array[0]。 int array = new int[10]; unsafe { fixed (int* pArr...