C++ 插入数组时发生写访问冲突

C++ 插入数组时发生写访问冲突,c++,arrays,C++,Arrays,我正在为我的类定义一个结构器。基本上,我希望获取一个输入并将其写入成员变量(数组) classdynarray { 国际货币单位大小; int*m_p_数组; 公众: DynArray(){ 标准::cout>m_尺寸; m_p_数组[m_大小]; 对于(int i{0};i C++中的动态数组是用新< /COD>关键字分配的: m_p_array = new int[m_size]; 别忘了删除这个内存,通常是在析构函数中。你还应该正确地实现特殊的成员函数。下面是一个解决方法 请注意: m_

我正在为我的类定义一个结构器。基本上,我希望获取一个输入并将其写入成员变量(数组)

classdynarray
{
国际货币单位大小;
int*m_p_数组;
公众:
DynArray(){
标准::cout>m_尺寸;
m_p_数组[m_大小];
对于(int i{0};istd::cout这不是为数组分配内存的方式:

m_p_array[m_size];
您需要这样做:

m_p_array = new int[m_size];
稍后,您需要释放析构函数中的内存:

delete[] m_p_array;

<>但请考虑使用<代码> STD::向量,因为它更好。

< P> C++中的动态数组是用<代码>新< /COD>关键字分配的:
m_p_array = new int[m_size];
别忘了删除这个内存,通常是在析构函数中。你还应该正确地实现特殊的成员函数。下面是一个解决方法

请注意:

m_p_array[m_size];
只是索引到数组中,不声明或初始化任何内容

由于您从未初始化过
m_p_数组
,因此访问内存超出了范围,这是一种未定义的行为

我没弄清楚我的错误是什么

警告消息中存在错误:

变量“DynArray::m_p_array”未初始化。始终初始化成员变量

在这里:

您可以通过未初始化的指针执行间接操作,并尝试分配指向对象的同级,这将导致未定义的行为

您可以通过初始化成员变量来解决此问题。您可以使用默认成员初始化器或使用成员初始化列表来完成此操作

基本上,我希望获取一个输入并将其写入成员变量(数组)


实际上,成员变量不是数组。它是一个指针。也许这是问题的根源。也许你应该使用数组成员来代替。

为你的数组使用内存分配器-新建/删除或其他更安全的方法。此外,3或5或其他规则也适用,因为这是在构造函数中。你认为
m\p\u数组[m\u size]
正在做什么?简要说明
m_p_数组[m_size];
实际上做了什么,以及它是如何导致访问冲突的,这将对提问者有教育意义。@user4581301它没有。
std::cin>>m_p_数组[i]
做了什么。标题清楚地说明了“写入访问冲突”是的,
std::cin>>m\u p\u数组[i]绝对没有问题
.bhristov已经确定了错误的位置。错误在几行之后表现出可行的效果这一事实无关紧要。我只是想更好地解释错误的原因和原因。但是std::vector远不止这些better@pm100当然,但是OP正在编写一个名为
DynArray
的类,所以我假设它们是实现的ng
std::vector
m_p_array[m_size];
std::cin >> m_p_array[i];