c++ - 运行时检查失败 #2 - 变量 'RL' 周围的堆栈已损坏

标签 c++ stack

我的问题是,当我运行我的程序时,它告诉我“运行时检查失败 #2 - 变量‘RL’周围的堆栈已损坏。”

#include<iostream>    
double current(double Eth, double Rth, double RL[], int j);    
double power(double I[], int k, double RL[], int j);    
int main()
{
    using namespace std;    
    double Eth, Rth, RL[100], I[100], P[100], Pmax;    
    Pmax = 0;    
    cout << "enter the values of Eth and Rth respectively " << endl;
    cin >> Eth >> Rth;
    int j = 0;    
    for (int i = (Rth / 10); i <= Rth * 10; i = i + 0.25)
    {
        RL[j] = i;
        I[j] = current(Eth, Rth, RL, j);
        P[j] = power(I, j, RL, j);
        if (P[j]> Pmax)
            Pmax = P[j];
        j++;
    }
    cout << " the max power =" << Pmax << endl;    
    return 0;    
}
double current(double Eth, double Rth, double RL[], int j)    
{   
    double IL;    
    IL = (Eth / (RL[j] * Rth));    
    return IL;    
}    
double power(double I[], int k, double RL[], int j)    
{   
    double Pow;    
    Pow = I[k] * I[k] * RL[j];    
    return Pow;   
}

最佳答案

这里是:

                                    //    v---- here
for (int i = (Rth / 10); i <= Rth * 10; i = i + 0.25)

不起作用。 i是一个整数,所以i + 0.25在赋值时会立即转换为int,所以i不会改变。因此,该循环是一个无限循环,随着 j 在每次迭代中攀升,在某些时候它会超出您写入的数组的边界。那时,阵列周围的堆栈已损坏。

可能这可以通过将 i 设为 double 来解决。

关于c++ - 运行时检查失败 #2 - 变量 'RL' 周围的堆栈已损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27422395/

相关文章:

c++ - 如何专门化用作函数参数的模板类型名?

c++ - std::memory_order_seq_cst 是如何工作的

c++ - 如何在 C++ 中删除 float

c++ - 返回模板化的依赖类型

java - 骑士之旅深度优先搜索无限循环

c++ - 寻找 Qt SMPP 客户端

c++ - 添加堆栈中的每个值

java - tld 文件中的堆栈

node.js - Redis,转储文件, volatile 内存到硬盘 volatile ,NodeJS

java - 再次调用之前终止函数?