我可以访问 vector 中尚未声明的位置吗?

阿曼耆那教|

假设我的向量大小定义为 6。

vector<int>v(6);

但是当我输出时,它不会给我错误。

cout<<v[7]; //works

我知道向量实际上是如何增长的,它们会预先定义一些大小x并将其加倍。所以位置 7 是可以接受的。

但它仍然适用于位置 10000 为什么?为什么我可以访问到目前为止尚未声明的内存位置?

cout<<v[10000]; //works
阿明·蒙蒂尼

答案可以在 C++ 参考中阅读。

在这里你可以读到不会进行边界检查,也不会插入新元素。你只是有未定义的行为。

所以,更详细地说:

  • 使用索引大于向量大小的索引运算符,不会增加向量的大小并添加新元素。
  • 使用大于向量大小的越界索引将简单地访问不属于向量的内存位置。
  • 读取这样的位置通常会给出一个随机值或更好的设置,一个未定义的值。这通常不会损害您的程序,除非您返回未定义的值。
  • 写入越界值通常是一个非常严重的问题,因为您正在覆盖您没有赢得的内存。非常危险。

如果要进行边界检查,请-function使用向量

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Linux

是否可以在尚未声明的共享库中调用函数?

来自分类Dev

可以在elasticsearch中访问dense_vector的值吗?

来自分类Dev

我可以在 C++ 中使用像 ** vector < pair <int ,vector < int >> > vec** 这样的声明吗?

来自分类Dev

我可以将std :: vector <int> *转换为int *吗?

来自分类Dev

抛出异常后,我可以信任vector :: size吗?

来自分类Dev

我可以安全地复制vector <array>吗?

来自分类Dev

我可以强制std :: vector留下内存泄漏吗?

来自分类Dev

我可以访问OWIN环境词典吗?

来自分类Dev

我可以从HttpContext访问ViewData吗?

来自分类Dev

Hazelcast:我可以从Memcached访问IMap吗?

来自分类Dev

我可以从Windows远程访问Ubuntu吗?

来自分类Dev

我可以访问嵌套模板的类型吗?

来自分类Dev

我可以访问临时对象的成员吗?

来自分类Dev

我可以从脚本包访问ScriptArgs吗?

来自分类Dev

我可以在任何函数中访问main中声明的变量吗?

来自分类Dev

我可以访问在 C++ 中声明为 MEMBER 的 QPROPERTY 吗?

来自分类Dev

我可以从实例列表中初始化std :: vector <T *>吗?

来自分类Dev

我可以在C ++中获得非专业的vector <bool>类型吗?

来自分类Dev

我的服务可以访问我的静态类吗?

来自分类Dev

在Swift中对我自己的ViewController进行单元测试时,使用未声明的类型'ViewController'吗?

来自分类Dev

我可以在ubuntu touch中访问/ sdcard /吗?

来自分类Dev

我可以从默认继承中更改访问者吗?

来自分类Dev

我可以在jackson BeanSerializerModifier中访问请求参数吗?

来自分类Dev

我可以在GDB中的“内存访问”上设置断点吗?

来自分类Dev

我可以在Linux中锁定对TCP端口的访问吗

来自分类Dev

在Electron Framework中,我可以访问剪贴板吗?

来自分类Dev

我可以像这样访问redux中的状态吗?

来自分类Dev

我可以在Google Cloud Function中访问GraphicsMagicks或ImageMagicks吗?

来自分类Dev

我可以在C#中访问对象的字段吗

Related 相关文章

  1. 1

    是否可以在尚未声明的共享库中调用函数?

  2. 2

    可以在elasticsearch中访问dense_vector的值吗?

  3. 3

    我可以在 C++ 中使用像 ** vector < pair <int ,vector < int >> > vec** 这样的声明吗?

  4. 4

    我可以将std :: vector <int> *转换为int *吗?

  5. 5

    抛出异常后,我可以信任vector :: size吗?

  6. 6

    我可以安全地复制vector <array>吗?

  7. 7

    我可以强制std :: vector留下内存泄漏吗?

  8. 8

    我可以访问OWIN环境词典吗?

  9. 9

    我可以从HttpContext访问ViewData吗?

  10. 10

    Hazelcast:我可以从Memcached访问IMap吗?

  11. 11

    我可以从Windows远程访问Ubuntu吗?

  12. 12

    我可以访问嵌套模板的类型吗?

  13. 13

    我可以访问临时对象的成员吗?

  14. 14

    我可以从脚本包访问ScriptArgs吗?

  15. 15

    我可以在任何函数中访问main中声明的变量吗?

  16. 16

    我可以访问在 C++ 中声明为 MEMBER 的 QPROPERTY 吗?

  17. 17

    我可以从实例列表中初始化std :: vector <T *>吗?

  18. 18

    我可以在C ++中获得非专业的vector <bool>类型吗?

  19. 19

    我的服务可以访问我的静态类吗?

  20. 20

    在Swift中对我自己的ViewController进行单元测试时,使用未声明的类型'ViewController'吗?

  21. 21

    我可以在ubuntu touch中访问/ sdcard /吗?

  22. 22

    我可以从默认继承中更改访问者吗?

  23. 23

    我可以在jackson BeanSerializerModifier中访问请求参数吗?

  24. 24

    我可以在GDB中的“内存访问”上设置断点吗?

  25. 25

    我可以在Linux中锁定对TCP端口的访问吗

  26. 26

    在Electron Framework中,我可以访问剪贴板吗?

  27. 27

    我可以像这样访问redux中的状态吗?

  28. 28

    我可以在Google Cloud Function中访问GraphicsMagicks或ImageMagicks吗?

  29. 29

    我可以在C#中访问对象的字段吗

热门标签

归档