gpt4 book ai didi

c++ - 删除获取 AccessViolationException 的指针

转载 作者:太空狗 更新时间:2023-10-29 23:37:00 25 4
gpt4 key购买 nike

我有一个类指针声明:

MyClass* a;

在销毁方法中我有:

    if (a)
{
delete a;
a= NULL;
}

删除指针a时遇到问题:

Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

问题的原因是什么,我该如何解决?

最佳答案

根据您当前的声明:

MyClass* a;

a 获取一个随机值。如果您以后再也没有给它一个有效的值,例如:

a = new MyClass();

它将指向内存中的一个未知位置,很可能不是为您的程序保留的内存区域,因此当您尝试删除它时会出现错误。

避免这个问题的最简单方法是在声明时给 a 一个值:

MyClass* a = new MyClass();

或者,如果你在声明它的时候不能给它一个值(也许你还不知道),就把它赋给null:

MyClass* a = 0;

顺便说一句,您可以从代码中删除测试 (if (a))。 delete 是对空指针的空操作。

关于c++ - 删除获取 AccessViolationException 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10722865/

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