他们都在一个线性连续的数组中存储数据,访问或迭代都是O(1)操作,因此性能没有区别。唯一的情况是vector可能比一些小列表慢,因为数组存储在当前堆栈帧的堆栈上,因此它们的数据很可能已经加载到CPU缓存中。相反,vector将数据存储在堆上,因此在首次访问之前数据不会在缓存中可用。 另外,vector还有一个间接级别,因为您需要先加载数组的地址,因此第一个内存访问可能也会变慢,但这只是微不足道的。 当使用向量的向量与多维数组时,另一个更糟糕的时间是每个向量都是单独分配的,并且散布在所有内存周围,这对缓存不利。请参见Access time of vec vs array
另请参见Difference between array vs. vec for memory and cpu usage
-fstack-protector-all
的软件堆栈保护,它会发出额外的代码来检测缓冲区溢出,并且据我所知与操作系统无关。这种保护在 Rust 中并没有太多意义,因为它对我们链接的任何 C 库都没有帮助,并且与 Rust 的标准内存安全功能相比也没有提供任何额外的好处。您似乎在提到我不知道的另一种“堆栈保护”。 - Sven Marnach