C++引物动态数组初始化程序的数目超过大小
C++ primer dynamic array number of initializers exceeds the size
在C++引物5版中。第12章动态存储器
如果初始化器而不是元素,其余元素都是值初始化的。如果初始值设定项的数量超过给定的大小,则新表达式将失败,并且不会分配任何存储。在这种情况下,new抛出一个类型为bad_array_new_length的异常。与bad_alloc一样,此类型在新标头中定义。
这是关于分配和初始化动态数组的。但我认为这是不正确的:如果初始化程序的数量大于动态数组的大小,那么这是编译时错误,而不是运行时错误:
auto p = new int[3]{4, 5, 6, 7}; // compile-time error: Too many initializers.
这可能是一个编译时错误,以防您使用常量作为数组大小,而编译器可以清楚地告诉您存在问题。
然而,在很多情况下,分配的内存大小不是恒定的,而是在编译时无法推导出的变量。在这种情况下,将在运行时抛出异常。
相关文章:
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 使用动态链接加载程序 <dlfcn.h> 而不是直接函数调用的目的是什么?
- 动态空间分离C++程序中的输入
- "动态创建的事件处理程序"复选框
- 第一次尝试使用new动态创建结构数组,程序挂起没有错误
- 在不释放所有动态分配的资源的情况下结束程序是否有风险
- 带有log4cxx的自定义和动态附加程序的配置
- 如何对以下程序使用静态或动态转换
- C++引物动态数组初始化程序的数目超过大小
- 我应该在这个程序中使用静态内存分配还是动态内存分配
- 引发未经处理的异常:简单 C++ 程序中的读取访问冲突,动态增加数组长度以存储数字
- 如果我在 Linux 上更改C++动态共享库,而我的可执行程序在其上使用,会发生什么
- 删除动态字符串时程序崩溃
- 如何在程序中动态初始化对象
- 我的C++程序有问题.涉及动态调整整数数组的大小
- 在实时程序中是动态内存访问有害的
- 调试从c++应用程序动态加载的c++ /CLI DLL
- 从应用程序动态地向exe传递参数