为什么大型数组会出现运行时错误,而向量不会?



我在本地函数中声明了大尺寸10^5的数组,这给了我运行时错误,但是当我采用向量而不是数组时,代码是成功的。那么为什么矢量不给错误,而数组呢??

看这里,这解释了局部变量(堆栈)和动态分配内存(std::vector使用)之间的区别。https://www.geeksforgeeks.org/stack-vs-heap-memory-allocation/

最好提供代码片段。但是我可以假设你是在有大小限制的堆栈上创建数组(通常是几MB甚至小于1 MB)。另一方面,Vector在堆上分配的内存通常比堆栈的大小大得多。因此,因为堆大小足以包含10^5字节,所以在使用vector时不会出现错误。因为堆栈大小不足以包含10^5字节,所以在使用array时会出现运行时错误。

最新更新