gpt4 book ai didi

初始化指向指针的指针时出现 C++ 错误

转载 作者:行者123 更新时间:2023-11-28 04:20:07 24 4
gpt4 key购买 nike

我使用的是大型代码库,请原谅我没有包含所有源代码。我将尽我所能总结问题,希望它足以给出答案的一些直觉。

当创建指向指针的指针(用作指针的动态数组)时,我在堆中某处遇到错误,请参见下图的调用堆栈:

Error

所有 setFrontNodes() 是:

void Node::setFrontNodes(int size) {
frontNodes = new Node*[size]; // ERROR ON THIS LINE
nFrontNodes = size;
}

我的类 Node 的标题在哪里:

class Node {
public:
~Node();
int nBackNodes;
int nFrontNodes;
Node** backNodes;
Node** frontNodes;
void setFrontNodes(int size);
void setBackNodes(int size);
double value;
double valuePrime;
ActivationFunction* activationFunction = NULL;
InitWeightMethod* initWeightMethod = NULL;
void initWeights(double multiplier);
double bias;
double deltaBias;
double* weights;
double* deltaWeights;
double errorGradient;
Node(int number);
void forwardProp();
int number;
string label;
int layer;
};

现在这是一个奇怪的问题。该错误将随机发生。我将使用相同的参数和所有内容运行相同的程序,错误会在那里发生,或者在运行时的另一个时间发生,或者根本不会发生!这使得追查错误变得极其困难,以及为什么我没有可以重复的完整代码示例。

听起来在堆上分配内存时出现了一些问题,但我不确定它可能是什么或如何修复它。 vector 不会导致错误,但在训练神经网络(例如我正在使用的代码)时,速度会让人 NumPy 。

我运行了内存诊断,当错误发生时我还有超过 4gb 的可用 RAM。

随时感谢!如果您还需要其他任何东西,请告诉我,但就像我说的那样,这是一个大型程序,并且错误出现是随机的,所以我正在寻找一个一般性问题,在导致 ntdll.dll 的堆上分配内存时我可能会遇到这个问题屏幕截图中的 !_RtlReportCriticalFailure@12() 错误。

最佳答案

正如 Igor Tandetnik 所评论的,这种错误可能是由于 size 的垃圾值,或者是由于堆已损坏。确保 size 是一个有效的数字,并确保你没有写入你不应该接触的内存(因为这可能会破坏堆)。

如果可能,您可以使用代码清理器(如 clang)来检查这一点,或者您可以使用 valgrind 等工具来查看它何时发生。

关于初始化指向指针的指针时出现 C++ 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55644170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com