堆栈周围的变量已损坏
Stack around variables corrupted
所以我在编写编程类时做了一个小测试,作为一个刚开始编码的人,我在代码中的某个地方犯了一个错误。
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
void main()
{
const int m = 4;
int n = 3, p = 46, i;
int X[m];
int q[m];
for (i = 0; i < m; i++)
q[i] = p;
q[i+1] = p - q[i] / n;
if (q[i] = 0)
{
X[i] = n;
}
else{ X[i] = q[i] / pow(n, m - i); }
cout << "Rezultatai: " << X << endl;
}
它不断显示变量X
和q
已损坏的错误,我不知道哪里出了问题。
问题很可能是您读取的内容超出了数组的范围。您将q
声明为一个包含4个元素的数组,从索引0开始,到索引3结束。
for (i = 0; i < m; i++)
q[i] = p;
在这个for循环之后,i
将具有m
(4)的值,使其不是有效的下标。之后每次使用i
作为下标运算符(如q[i]
)时,都处于未定义行为的领域。这就是造成腐败的原因。我不知道你想做什么,但你需要确保0 <= i && i < m
。
其他一些东西:
if (q[i] = 0)
除了i
仍然不在q
的范围内之外,您还需要==
。==
运算符比较相等性,并按照预期的方式计算为true
或false
。=
运算符将右侧参数分配给左侧参数。它还计算为对左参数的引用,因为任何"非零"都是true
,而zero
是false,所以它将编译并最终成为false
。
void main()
这应该是int main()
。
相关文章:
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 变量周围的堆栈'...'已损坏
- 运行时检查失败 #2 变量"A"周围的堆栈已损坏
- 运行时检查失败 #2 - 变量"e"周围的堆栈已损坏。发生
- 变量周围的堆栈'sortArray'已损坏
- 变量周围的堆栈'folderPath'已损坏
- 运行时检查失败 #2 - 变量周围的堆栈'...'已损坏
- 运行时检查失败 #2 - 变量"l1"周围的堆栈已损坏
- C++:此代码可以编译,但引发运行时检查失败 #2 - 围绕变量周围的堆栈'num'已损坏。发生
- 数组变量周围的堆栈已损坏
- 运行时检查失败 - 变量周围的堆栈已损坏
- 调试:运行时检查失败 #2 - 变量"LoggerThread"周围的堆栈已损坏
- 运行时检查失败 #2 - 变量周围的堆栈'k'已损坏
- 运行时检查失败 #2 - 变量"数字选择"周围的堆栈已损坏
- 数组问题:变量周围的堆栈'arr'已损坏
- 运行时间检查:变量周围的堆栈已损坏
- 变量周围的堆栈'Yarray'已损坏
- 变量"name"周围的堆栈已损坏C++
- 运行时检查失败#2 - 变量周围的堆栈'myArray'已损坏.- 似乎无法弄清楚如何删除此错误
- MS 工作室 17 变量周围的堆栈已损坏