我能记得内存错误吗?

时间:2016-07-11 08:47:49

标签: linux rust

我想写一个安全的程序,所以我会在程序开始时在堆中分配所需的空间。

  1. 是否可以从某个点开始禁用堆内存分配, 比如toggle_panic_on_heap_allocation
  2. 我怎样才能抓住"内存不足"初始化过程中发生错误?默认行为是中止,但我不想崩溃,只需退出错误代码?

1 个答案:

答案 0 :(得分:3)

不,你不能发现记忆错误。

some discussion关于添加(部分)支持的问题,但是在捕获OOM错误方面存在很多问题。

您可以做的是开始一个新流程并通过ipc-channels与之沟通。然后,可能的过度定位过程将被杀死,另一个过程可以从中恢复并重新启动失败的过程。

你不能在运行时禁用堆分配,但这无论如何都不是很有趣,因为你的程序必须在堆分配时中止。相反,您应该静态检查没有堆分配。有一些工作/谈话在clippy中添加这样的静态分析"restriction"