【发布时间】:2017-05-14 00:45:15
【问题描述】:
我是一个相对较新的 C++ 并尝试制作一个小型策略游戏,但在尝试将字符串转换为整数时出现此错误:
写访问冲突。 _左边是0xCCCCCCCC
Visual Studio 将我带到这段代码:
static void __CLRCALL_OR_CDECL assign(_Elem& _Left, const _Elem& _Right)
_NOEXCEPT
{ // assign an element
_Left = _Right;
}
使用断点我发现导致错误的代码行是:CountriesFromFile[x].Area = stoi(Line);
CountriesFromFile[x].Area 是一个整数,Line 是我从一个文件中读取的字符串 行绝对是数字,因为我使用 cout 来检查。 任何有关如何解决此错误的帮助将不胜感激
更新
Running countriesFromFile[x].Area = 1;抛出同样的错误。 我还测试了将 x 的值从 0 更改为 1 到 2 而没有变化
更新2
我已经把我的代码弄乱了一段时间,通过删除我遇到错误的代码行,我现在很确定它是编译器,因为错误发生在其他地方所以我删除了该行并且错误发生在某个地方别的。当我尝试使变量=某事时,错误不断发生
【问题讨论】:
-
掌握调试器的最佳时机,在
CountriesFromFile[x].Area = 1;之前检查CountriesFromFile时它告诉你什么,应该很容易追溯并找出问题所在:-) -
请edit您的问题提供minimal reproducible example。
-
我的水晶球说
CountriesFromFile是一个向量,它是空的。使用push_back(). -
那里没有问题。我们无法知道您需要什么帮助。你知道什么是写访问冲突吗?如果不是,你为什么不问这个?如果是这样,为什么不显示一些基于此的分析?你知道
0xCCCCCCCC的建议吗?如果不是,为什么不问这个?如果是这样,为什么不展示一些基于此的分析? -
调试器是解决此类问题的正确工具。 在询问 Stack Overflow 之前,您应该逐行逐行检查您的代码。如需更多帮助,请阅读How to debug small programs (by Eric Lippert)。至少,您应该 [编辑] 您的问题以包含一个重现您的问题的 Minimal, Complete, and Verifiable 示例,以及您在调试器中所做的观察。
标签: c++ arrays visual-c++ data-structures access-violation