C++ glibc检测到***free()无效指针
嗨,朋友们,当我在代码中运行代码“glibc detected*free()invalid pointer”时,我遇到了这个错误。我创建了3个指针,并使用new将内存分配给了一个指针,同时删除了所有三个指针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
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,因为有时指针碰巧是空的(当变量放在只包含零的内存位置时可能发生)。请提供可编译的代码来重现问题。所有删除的代码使诊断问题变得几乎不可能。请提供可编译的代码以再现问题。所有删除的代码使得诊断问题几乎不可能。