gpt4 book ai didi

c++ - 字符串数组的动态分配 C++

转载 作者:行者123 更新时间:2023-11-28 02:58:10 25 4
gpt4 key购买 nike

我正在尝试从提供给我的文件中读取名称。读取的名称数量基于用户输入。这编译很好,但是当我运行它时我得到这个错误:

“0xC0000005:访问冲突写入位置 0xabababab。”

我做了一些研究,我认为这可能是因为我正在写数组的边界,但我无法弄清楚为什么会这样。

在有人问我之前,我被告知我必须为我的数组使用字符串*。我不会使用 vector 或字符数组。谢谢。

    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++ 代码行,正如大卫所说,你必须将 numRead 初始化为零,否则一些分配的更大的随机数也会导致这个错误

关于c++ - 字符串数组的动态分配 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21518309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com