矢量初始化期间出现未知应用程序故障
Unknown application failure during vector initialization
我正在尝试初始化一个向量,如下所示:
vector<int> vect(n, 2);
此语句初始化vect
以包含值为2
的int
类型的n
元素。n
是类型为size_t
的变量,已对其进行检查以确保n <= vect.max_size()
始终为真。
到目前为止,我正在code::Blocks上测试我的代码。它适用于n
的任意小值,但当我尝试在n = vect.max_size()
的IDE中运行它时,程序终止,说发生了未知的应用程序错误,并与开发人员(我)交谈。
有人知道出了什么问题吗?这不是在运行时将矢量初始化为最大大小的正确方法吗?我检查了一下,我的数学是正确的,n
没有超过vect.max_size()
max_size()
成员在某种程度上是理论极限。在具有大量内存的机器上,可以创建相应大小的容器,但通常使用现代技术是不可能的。
max_size()
存在的原因在历史的迷雾中几乎消失了。我怀疑当STL被开发出来并且容器被实例化为"小"指针(类似于__small int*
)时,这个值是有意义的:大约在那个时候,一些平台有不同大小的指针类型,例如16位的"小"和32位的"大"指针。
我认为没有一种实用的方法来确定可以分配的容器的最大大小。充其量,您可以做一些类似二进制搜索的事情,尝试创建一个具有一定大小的容器并捕获std::bad_alloc
:很可能是您的"应用程序错误"和该类型的未捕获异常。
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- Qt5 C++ 应用程序因未知原因崩溃
- 如何在将我的 QT 应用程序交叉编译为 raspberry-pi3 时修复未知错误
- 将 DLL 与应用程序链接时出现未知错误
- 为什么我会在应用程序上出现未知C++参考链接错误,而不是 Linux 中的库
- C++、委派、应用程序崩溃、未知原因
- 矢量初始化期间出现未知应用程序故障