【问题标题】:array index 2 is past the end of the array数组索引 2 超出数组末尾
【发布时间】:2020-05-15 19:49:09
【问题描述】:

字符串数组 d[2] 应该有 3 个元素。但似乎它只能包含 2 个元素。第三个元素未存储在数组中。是什么原因?它是否与我使用 new 运算符所做的内存分配有关?

#include<iostream>

class A
{
public:
    A()
    {   
        std::string d[2];
        d[0] = "Dilshdur";
        d[1] = "Dilshad";
        d[2] = "Dolon";
        for(int i=0; i<3; i++)
        {
            std::cout<<d[i]<<std::endl;
        }

    }


};


int main()
{
   A *p;
   p = new A;
   return 0;
}

【问题讨论】:

    标签: c++11 dynamic-memory-allocation


    【解决方案1】:

    您在阅读或学习数组时似乎遗漏了一些东西,因为您在定义数组时提供的大小是元素的数量,而不是顶部索引。

    所以

    std::string d[2];
    

    d定义为两个元素的数组,索引为01


    如果您事先不知道元素的数量,请使用std::vector,因为它允许您在运行时动态添加元素。

    【讨论】:

    • 我不知道为什么我错过了这个显而易见的事情。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 2021-12-12
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多