double free or corruption 错误解决办法
2012-03-28 16:43
363 查看
在编写clutter和glib程序时,可能会出现此错误
错误的原因可能是像错误的字面原因所示的一样,也可能是因为其它原因.
但是最主要的因为以下两个函数的使用:
clutter_actor_destroy的调用和g_free
这两个函数都是销毁一个指针所指向的对象,但是,不止这一个共同点
它们在释放掉指针所指的对象后,都不会将指针赋NULL值.
如果在不小心再次调用clutter_actor_destroy或者g_free后就会造成上面的问题.
但是也有不完全因为上面的原因.
那就是一个未初始化的指针,调用以上两个函数时,也会造成这个错误.
所以,以编写程序时,养成一个好习惯,就是在调用以上两个函数后马上手动赋空.不要为了少敲几代码,搞了花上大半天的时间.
当然,变量初始化这个问题也应该时刻牢记.
ps:主动调用一个actor的clutter_actor_destroy函数会造成它的dispose函数运行两次,所以如果调用以上两个函数而又未对指针赋空,则肯定会出现上述问题.
错误的原因可能是像错误的字面原因所示的一样,也可能是因为其它原因.
但是最主要的因为以下两个函数的使用:
clutter_actor_destroy的调用和g_free
这两个函数都是销毁一个指针所指向的对象,但是,不止这一个共同点
它们在释放掉指针所指的对象后,都不会将指针赋NULL值.
如果在不小心再次调用clutter_actor_destroy或者g_free后就会造成上面的问题.
但是也有不完全因为上面的原因.
那就是一个未初始化的指针,调用以上两个函数时,也会造成这个错误.
所以,以编写程序时,养成一个好习惯,就是在调用以上两个函数后马上手动赋空.不要为了少敲几代码,搞了花上大半天的时间.
当然,变量初始化这个问题也应该时刻牢记.
ps:主动调用一个actor的clutter_actor_destroy函数会造成它的dispose函数运行两次,所以如果调用以上两个函数而又未对指针赋空,则肯定会出现上述问题.
相关文章推荐
- 关于执行free函数的时候提示” double free or corruption“错误的解释和解决办法
- C++错误解决:double free or corruption (out): 0x00000000011abe70 ***
- 定位错误:glibc detected :double free or corruption (!prev): 0x08a03b88
- *** glibc detected *** double free or corruption: 0x0937d008 *** 错误
- *** glibc detected *** double free or corruption: 0x0937d008 *** 错误
- glibc detected double free or corruption error问题解决
- Error in '/usr/bin/c++': double free or corruption (top)问题解决
- Undefined function or method ' ' for input arguments of type 'double' ---错误解决办法
- eclipse报 No XML content. Please add a root view or layout to your document. 错误的解决办法
- This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法
- Workspace in use or cannot be created, choose a different one.--错误解决办法
- Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法
- 数据保存时,出现‘record not found or changed by another user’错误信息的解决办法
- 三种关于Linux执行.sh文件,提示No such file or directory错误的解决办法
- 网页报“缺少标识符 字符串或数字”(Expected identifier,string or number)错误的原因及解决办法
- ORA-01033: ORACLE initialization or shutdown in progress错误解决办法
- Workspace in use or cannot be created, choose a different one.错误的解决办法
- *** glibc detected *** /root/MAG/bin/MAGServer: free(): invalid pointer: 0xb6b5cb20 ***错误解决办法
- 一种编译错误的解决办法。/usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: No such file or directory
- 64bit Linux下error: gnu/stubs-32.h: No such file or directory错误解决办法