C++ 未处理的异常。这是怎么回事?

c++ unhandled exception. what's going on?

本文关键字:怎么回事 未处理 异常 C++      更新时间:2023-10-16

我正试图从输入文本制作香农代码制作器,我有一些麻烦…

所以,这里有一些简单的代码

int main()
{
    string x="this is very big text.";
    int temp;
    int N = x.length();
    int *mass = new int [N];

然后计数文本中的符号;

然后计数从ASCII表中使用的符号;

创建带有符号和符号计数器的新2块,但它们的尺寸相当小;

delete char mass by delete mass;

按计数器排序并计算它们的累积概率;

double * cumulative = new double (k);
            double temp=int_mass[0];
            cumulative[0]=0;
            for (int i=1; i<k; i++)
        {
            temp=int_mass[i-1];
            cumulative[i]=cumulative[i-1]+temp/N;
        }    

计算所有3个质量

double a,b,n;
n=N;
for (int i=0; i<k; i++)
{
    b=int_mass[i];
    b/=n;
    cout<<char_mass[i]<<" ";
    cout<<b<<" ";                       //**__**__**
    cout<<cumulative[i]<<endl;
}

所以,我有一些麻烦。如果文本很小,则在程序终止时捕获未处理的异常。如果文本很大,大约100+符号,我在__**__有例外。

你有什么建议,为什么会发生?

抱歉,这是我第一次在StackOverFlow上提交。

使用[]代替()new数组:

double * cumulative = new double [k];
                                 ^ ^

(k)只是在内存中创建一个位置并初始化为k,而不是创建一个大小为k的数组。

,

使用[]删除数组:

delete [] mass;
       ^^

,

你正在使用k,但是我看不到你在哪里初始化它?!

for (int i=0; i<k; i++)

,

最好使用std::vector而不是自定义数组,以避免上述问题