Fix typo in stack-overflow.md

pull/446/head
lijinpeng 3 years ago
parent bd58c8118e
commit 4d9638fe8e

@ -1,6 +1,6 @@
# 线程类型导致的栈溢出 # 线程类型导致的栈溢出
在Rust中我们不太容易遇到栈溢出因为默认栈还挺大的而且大的数据往往存在堆上(动态增长),但是一旦遇到该如何处理?先来看段代码: Rust 中,我们不太容易遇到栈溢出,因为默认栈还挺大的,而且大的数据往往存在堆上(动态增长),但是一旦遇到该如何处理?先来看段代码:
```rust ```rust
#![feature(test)] #![feature(test)]
extern crate test; extern crate test;
@ -26,7 +26,7 @@ thread 'tests::it_works' has overflowed its stack
fatal runtime error: stack overflow fatal runtime error: stack overflow
``` ```
Bang很不幸遇到了百年一遇的栈溢出错误再来试试`cargo bench`,竟然通过了测试,这是什么原因?为何`cargo test`和`cargo bench`拥有完全不同的行为这就要从Rust的栈原理讲起。 Bang很不幸遇到了百年一遇的栈溢出错误再来试试`cargo bench`,竟然通过了测试,这是什么原因?为何`cargo test`和`cargo bench`拥有完全不同的行为?这就要从 Rust 的栈原理讲起。
首先看看`stack`数组,它的大小是`8 × 2 × 512 × 512 = 4 MiB`,嗯,很大,崩溃也正常(读者说,正常,只是作者你不太正常。。). 首先看看`stack`数组,它的大小是`8 × 2 × 512 × 512 = 4 MiB`,嗯,很大,崩溃也正常(读者说,正常,只是作者你不太正常。。).
@ -45,7 +45,7 @@ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; fini
``` ```
Bingo, 成功了,最后再补充点测试的背景知识: Bingo, 成功了,最后再补充点测试的背景知识:
> cargo test为何使用新线程因为它需要并行的运行测试用例与之相反cargo bench只需要顺序的执行因此main线程足矣 > `cargo test`为何使用新线程?因为它需要并行的运行测试用例,与之相反,`cargo bench`只需要顺序的执行因此main线程足矣

Loading…
Cancel
Save