分配新的零大小数组可以具有有效价值吗?
allocate new Zero-sized array can have effective value?
//new T[0] 分配一个零大小的数组可以有值吗?
auto pv=new int[0];
cout<<pv<<endl; //0x... ?
*pv=123;
cout<<*pv<<endl; //123 ?
delete[] pv;
为什么? 如果是这样,新T[0]和新T[1]有什么区别
为什么我可以设置 0 大小数组的值...?
创建一个new int[0]
是合法的(尽管乍一看它可能没有用!
但是,您对它的使用就像任何其他缓冲区溢出一样:您的程序具有未定义的行为。
C++不会为您检查数组边界。那是你的工作。
越过它们似乎有效;它可能导致崩溃;它可以瞬间将太阳运送到银河系的另一部分。
只是不要这样做。
相关文章:
- 使用无符号字符数组有效存储内存
- 有效地计算多维数组的累积和?
- 计算数组重复次数的组合的有效算法,加起来达到给定的总和
- C++ 返回指向函数内定义的静态数组的指针是否有效?
- 声明后,gcc 的动态大小数组是否与标准数组有效相同?
- 如何有效地找到数组中三元组和的最小差异?
- 如何在C++中有效地将数字值重新分配给字符数组
- 如何有效地收集给定数组中的重复元素?
- 创建字符串数组的有效方法
- 如何在C++中有效地将数组移动到向量
- 在递归函数中更有效地创建对象和对象数组?C++
- 张量(多维数组)是树前瞻数据的有效存储类型吗?
- 有效地展平结构数组
- cpp 数组 - 分配常量索引有效,而非常量索引不起作用
- 如何在整数数组中有效地存储大量数字?C++
- 有效地从文本文件中读取带有字符串索引的大型二维数组(矩阵)
- 如何有效地使用 std::async 对指针数组执行操作
- 声明数组>> int arr[] 时出错;在C++(虽然在 Java 中有效)?
- 如何有效地用枚举填充 2D std::数组
- 这是arduino和C++的有效数组吗