运行 期间出错:内存位置有字符

Error during running : char at memory place

我有一个我不明白的错误。当我执行我的代码时,我得到了:

Exception non gérée à 0x00007FF9CC11A799 dans perception.exe : exception Microsoft C++ : char à l'emplacement de mémoire 0x000000ACEC0FE568. a eu lieu 

可以通过

翻译成英文

Uncatched exception at XXXXX in perception.exe : Exception Microsoft C++ : char at memory place YYYYY happened

我在这里遇到错误:

void NaiveBayesianNetwork::trainModel(mat& X, vec& y)
{
    // Initial checks
    if (X.n_cols != m_numFeatures)
        throw "The dimension of 'X' data is not consistent with number of features";
    if (X.n_rows != y.n_rows)
        throw "Dimension of 'X' and 'y' are not consistent";

    y = trunc(y); // only integer
    cout << "max " << y.max() << " ; min " << y.min() << endl;
    if (y.max() >= m_numClasses)
        throw "The number of classes in 'y' is bigger than expected";
    if (y.min() < 0.0)
        throw "The class ids should be positive";
    m_numberOfSample = X.n_rows;
//...

if (y.min() < 0.0)行,但是如果我评论它,我得到了之后的错误。所以这不是功能的问题(它在以前的打印中有效)。 matvec 是 Armadillo 库对象,它们在调用函数的 main 中创建。我打印了它们,它们看起来不错。

如果我在这里尝试捕获异常,我仍然得到调试器错误,并且没有捕获到异常。

我真的不明白这个问题,因为我没有使用指针(起初我什至没有使用引用,但我遇到了同样的问题。我添加了引用以避免无用的复制),所以我不知道为什么内存有问题。调试器在说Kernel.dll,不知道有没有用

提前致谢。

正如我@Someprogrammerdude 在评论中所建议的那样,问题是 throw。我应该用适当的 exception 替换 string,这解决了我的问题。

因为我的程序在执行过程中抛出了异常(我在更改字符串后可以看到它)。

谢谢。