C++ glibc检测到***free()无效指针

C++ glibc检测到***free()无效指针,c++,C++,嗨,朋友们,当我在代码中运行代码“glibc detected*free()invalid pointer”时,我遇到了这个错误。我创建了3个指针,并使用new将内存分配给了一个指针,同时删除了所有三个指针 class test() { public : int a; /..some functionality../ }; class second_test() { public : int b; /..some functionality../ } class third_t

嗨,朋友们,当我在代码中运行代码“glibc detected*free()invalid pointer”时,我遇到了这个错误。我创建了3个指针,并使用new将内存分配给了一个指针,同时删除了所有三个指针

class test()
{
public : 
int a;
/..some functionality../

}; 

class second_test()
{
public : 
int b;
/..some functionality../
} 

  class third_test()
    {
    public : 
    int c;
    /..some functionality../
    } 




int main()
{
test *ptrtest;
second_test *psecond_test;
third_test*pthird_test;



ptrtest = new test;
/..Doing some functionality.../


delete ptrtest;
   delete psecond_test;
delete pthird_test;


}
当我运行的时候,它给出了上面的错误,但令人惊讶的是,不是所有的时候,它给出了错误7,不是10次,它给出了上面的错误。请帮助我到底是什么问题。 因为在C++中,我认为删除空指针是安全的。
second_test *psecond_test;
不指向空指针的

second_test *psecond_test = NULL; 
是的


例如,下面是一些代码:

#include <cstdio>

int main() {
    struct x *ptr;
    printf("%p\n", ptr);
}

例如,当我使用
-Wall
时,叮当声会发出警告

[10:41pm] clang++ -Wall foo.cc
foo.cc:5:9: warning: variable 'ptr' is uninitialized when used here [-Wuninitialized]
        delete ptr;
               ^~~
foo.cc:4:10: note: initialize the variable 'ptr' to silence this warning
        int *ptr;
                ^
                 = NULL
不指向空指针的

second_test *psecond_test = NULL; 
是的


例如,下面是一些代码:

#include <cstdio>

int main() {
    struct x *ptr;
    printf("%p\n", ptr);
}

例如,当我使用
-Wall
时,叮当声会发出警告

[10:41pm] clang++ -Wall foo.cc
foo.cc:5:9: warning: variable 'ptr' is uninitialized when used here [-Wuninitialized]
        delete ptr;
               ^~~
foo.cc:4:10: note: initialize the variable 'ptr' to silence this warning
        int *ptr;
                ^
                 = NULL

谢谢,我明白了你的意思,但我关心的是为什么每次它都没有给出错误。@user1835342:错误代码几乎是不可能理解的,而且常常是不可预测的。修复错误,谜团就会消失。@user1835342,因为有时指针碰巧是空的(当变量放在只包含零的内存位置时可能发生)谢谢,我明白了你的意思,但我关心的是为什么每次它都没有给出错误。@user1835342:错误代码几乎是不可能理解的,而且常常是不可预测的。修复错误,谜团就会消失。@user1835342,因为有时指针碰巧是空的(当变量放在只包含零的内存位置时可能发生)。请提供可编译的代码来重现问题。所有删除的代码使诊断问题变得几乎不可能。请提供可编译的代码以再现问题。所有删除的代码使得诊断问题几乎不可能。