[英]glibc detected *** free() invalid pointer
嗨,朋友,我在我的代码中运行我的代码“ glibc检测到* free()无效的指针”时出现此错误,我正在创建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 ++中,我认为删除NULL指针是安全的。
second_test *psecond_test;
那并不指向空指针。
second_test *psecond_test = NULL;
是的。
例如,下面是一些代码:
#include <cstdio>
int main() {
struct x *ptr;
printf("%p\n", ptr);
}
当我运行它时,每次都会得到不同的地址。 (尽管它们可以相同,但可以为零,但它们是不确定的)
[10:36pm] ./foo
0x7fff6413205e
[10:36pm] ./foo
0x7fff6cff105e
[10:36pm] ./foo
0x7fff6890305e
例如,当我使用-Wall
时,Clang会发出警告。
[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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.