字符串数组的动态分配C
dynamic allocation of string arrays c++
我正在尝试从给我的文件中读取名称。读取的名称数量基于用户输入。这可以很好地编译,但是当我运行时,我会收到此错误:
" 0xc0000005:访问违规写作位置0xabababab。"
我做了一些研究,我认为这可能是因为我在数组的界限上写作,但是我无法弄清楚为什么是这样的。
在任何人问我被告知我必须使用字符串*作为数组之前。我不使用向量或字符数组。谢谢。
int Capacity;
int numNames = 0; // wasn't in original question, but was in the code
cin >> Capacity;
string name;
string* arr = new string[Capacity];
while( !fs.eof() && numRead < Capacity)
{
getline( fs , names);
arr[numRead] = names; // error thrown here
arr++;
numRead++;
}
您无法通过失去对数组的控件来增加数组启动地址(ARR )。数组索引仅在数组引用指向数组的第一个元素时才有效。因此,请删除ARR 代码行,正如David所说,您必须将Numread初始化为零,否则有些分配的较大随机数也将导致此错误
您不得递增arr
。删除该行的代码。您正在使用数组索引arr[numRead]
访问数组的元素。
我也没有看到您在循环开始之前将numRead
初始化为0
的证据。
使用矢量卢克!就像: std :: vector arr;然后在循环中将名称添加到矢量中: arr.push_back(name);
您正在编写的代码是C 并且请停止投票问题
相关文章:
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 动态更改数组的大小并读取值.(无矢量)
- 检测到堆损坏:在正常块 c++ 动态 2D 数组之后
- 动态维度数组的 C++ 别名指针
- C++ 在析构函数调用之前删除的动态成员数组
- 从类 c++ 动态创建数组
- 具有静态 std::array 的神经网络比使用动态 C 数组的神经网络慢
- "Error reading character of string" 为哈希动态增长数组的问题 (C++)
- 为什么我们在传递动态 2D 数组时不需要列数?
- 如何解决在使用动态 2D 数组进行矩阵乘法的 MPI 进行并行编程时的问题
- 使用动态布尔数组时出现问题
- C++ 在类中删除动态 2D 数组时不断"Aborted (core dumped)"
- 如何在C 中动态输入数组
- 关于删除动态对象数组
- 在C 中动态更改数组大小
- 使用动态指针数组进行动态对象分配 - 使用什么删除?
- 动态字符串数组分配错误
- 函数中的动态 2D 数组分配并将其返回给主数组
- c++动态字符串数组分配
- 使用字符串或字符动态分配(数组)