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

标签 c++ crash unhandled-exception

我正在尝试根据输入文本制作香农代码生成器,但我遇到了一些麻烦...

所以,有一些简单的狗屎代码

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

然后计算文本中的符号;

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

用符号和符号计数器创建新的 2 个质量,但它们的维度要小得多;

通过delete mass;

删除旧的char massive

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

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;
}

所以,我有一些麻烦。 如果文本很小,那么我会在 praogram 终止时捕获未处理的异常。 如果文本很大,大约有 100 多个符号,我在 __**__ 有异常(exception)。

你有什么建议,为什么会这样?

对于大代码感到抱歉,这是我在 StackOverFlow 上的第一次提交。

最佳答案

使用 []而不是 () new 数组:

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

(k)只需在内存中创建一个位置并将其初始化为 k而不是制作大小为 k 的数组.

使用 []用于删除数组:

delete [] mass;
       ^^

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

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

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

关于C++ 未处理的异常。这是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16761070/

相关文章:

c++ - 在 C++ 中的字符串之间添加一个字符

c++ - while 循环是否总是占用全部 CPU 资源?

ios - 此应用程序正在从后台线程修改自动布局引擎,这可能导致引擎损坏和奇怪的崩溃。

c# - NullReferenceException 未处理 - 不确定什么是 null

c++ - 使用此指针时 C++ 析构函数错误的原因?

c++ - "undefined reference"到从静态方法访问的模板类的静态成员

c++ - QT creator如何让一个UI生成的类继承其他类?

crash - NSTimer 错误访问

crash - 如何解决 malloc 中的崩溃问题

c# - 异常处理(矛盾的文档/尝试最终与使用)