55得票8回答
缓冲区溢出在使用gdb时有效,但不使用gdb无效。

我正在使用 CentOS 6.4 32 位系统,尝试在一个程序中引发缓冲区溢出。在 GDB 中它可以工作。这是输出:[root@localhost bufferoverflow]# gdb stack GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60...

48得票8回答
Python是否类型安全?

根据维基百科,计算机科学家认为,如果一种语言不允许违反类型系统规则的操作或转换,则被称为“类型安全”的语言。 由于Python运行时检查确保满足类型系统规则,因此我们应该将Python视为一种类型安全的语言。 Jason Orendorff和Jim Blandy在编程Rust中也提出了同样...

24得票1回答
在Haskell(GHC)中快速检查一个令人讨厌的外部函数

我想使用Haskell的quickcheck库测试一些C代码。最简单的方法似乎是使用foreign import来编写一个与C函数有关的属性。问题在于,如果C代码导致段错误或管理垃圾内存,我的测试要么没有输出而崩溃,要么做出完全不可预测的事情。 第二种选择是在C位上制作简单的可执行包装程序,...

22得票2回答
Swift中weak和unowned有什么内部区别?

我了解Swift中weak和unowned之间的使用和表面差异: 最简单的例子是,如果有一个Dog和一个Bone,则Bone可以对Dog进行弱引用(反之亦然),因为它们各自可以独立存在。 另一方面,在Human和Heart的情况下,Heart可以有一个对人类的unowned引用,因为一旦H...

21得票2回答
如何编写内存安全的C++应用程序?

是否可能创建一个编码标准或使用库,以证明能够消除C++中的任何内存管理错误? 我在想类似于Java的东西,例如在Java应用程序中不可能出现悬空指针。

17得票3回答
Rust如何实现仅在编译时检查指针安全性?

我曾经看到过,在使用指针的语言中,编译器无法在编译时完全确定所有指针是否正确地使用或有效(引用一个存在的对象),这是由于这本质上等同于解决停机问题。直觉上并不奇怪,因为在这种情况下,我们将能够推断出程序的运行行为,类似于相关问题所述。 然而,从我所知道的来看,Rust语言要求指针检查完全在编...

11得票1回答
安全关键项目中动态分配的替代方案(C语言)

在安全关键项目中,不建议使用任何动态分配或释放已分配的内存。仅在程序执行的详细化/初始化阶段允许使用。 我知道你们大多数人会争论要在软件中实现全部静态分配,或者在代码中进行一些证明,即动态分配不会影响整个程序等,但是,这个问题有没有其他解决方案?是否有任何方法或任何示例来在程序初始化/详细化...

10得票1回答
Python是否具有内存安全性?

随着Deno成为新的Node.js竞争对手,许多新闻文章中都提到了Rust的内存安全性质。一篇特别的报道称,Rust和Go以及Swift和Kotlin都适合于它们的内存安全性,但后两者在系统编程方面使用并不广泛。 Safe Rust是真正的Rust编程语言。如果你只编写Safe Rust代...

10得票3回答
在函数签名中解释将两个引用绑定到具有不同作用域参考的相同生命周期的含义。

我一直在努力理解Rust借用和所有权模型。假设我们有以下代码:fn main() { let a = String::from("short"); { let b = String::from("a long long long string"); ...

8得票2回答
为什么在“&mut self”中允许借用结构体成员,但是不允许在不可变方法中借用“self”?

如果我有一个封装了两个成员变量的结构体,并且基于其中一个更新另一个,只要我按照以下方式进行更新,那就没问题: struct A { value: i64 } impl A { pub fn new() -> Self { A { value: 0 } ...