定位错误:glibc detected :double free or corruption (!prev): 0x08a03b88
2011-11-22 15:58
811 查看
参考自:
http://topic.csdn.net/u/20090812/15/43cae1c5-938d-4dac-a5f2-192f262d30f5.html定位free/malloc的位置和参数,可以在对应的.cpp/.h文件中添加:
C代码
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/30/85366c76a17225683bd3be4d3177003b.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201909/20/7affef6c6b7c0d060913daec29dbaca9.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/30/84ef1eaf0e21b386d6ed747490e8c6d2.gif)
#include <stdio.h>
#include <stdlib.h>
void *
debug_malloc(size_t size, const char *file, int line, const char *func)
{
void *p;
p = malloc(size);
printf("%s:%d:%s:malloc(%ld): p=0x%lx\n",
file, line, func, size, (unsigned long)p);
return p;
}
#define malloc(s) debug_malloc(s, __FILE__, __LINE__, __func__)
#define free(p) do { \
printf("%s:%d:%s:free(0x%lx)\n", __FILE__, __LINE__, \
__func__, (unsigned long)p); \
free(p); \
} while (0)
int
main(int argc, char *argv[])
{
char *p;
p = malloc(1024);
free(p);
return 0;
}
#include <stdio.h> #include <stdlib.h> void * debug_malloc(size_t size, const char *file, int line, const char *func) { void *p; p = malloc(size); printf("%s:%d:%s:malloc(%ld): p=0x%lx\n", file, line, func, size, (unsigned long)p); return p; } #define malloc(s) debug_malloc(s, __FILE__, __LINE__, __func__) #define free(p) do { \ printf("%s:%d:%s:free(0x%lx)\n", __FILE__, __LINE__, \ __func__, (unsigned long)p); \ free(p); \ } while (0) int main(int argc, char *argv[]) { char *p; p = malloc(1024); free(p); return 0; }
延伸一下,如果想在不改动原来代码的情况下跳过这个错误,则可以将上述代码再重新改写一下:
#define malloc(s) debug_malloc(s, __FILE__, __LINE__, __func__)
#define free(p) do { \
printf("%s:%d:%s:free(0x%lx)\n", __FILE__, __LINE__, \
__func__, (unsigned long)p); \
if (p) { \
free(p); \
p = NULL; \
} \
} while (0)
转自:http://socol.iteye.com/blog/695872
相关文章推荐
- 定位问题:*** glibc detected *** : double free or corruption (!prev): 0x09b077d8
- 定位问题:*** glibc detected *** : double free or corruption (!prev): 0x09b077d8
- *** glibc detected *** ./client: double free or corruption (!prev): 0x09385098 ***
- *** glibc detected *** double free or corruption: 0x0937d008 *** 错误
- *** glibc detected *** double free or corruption: 0x0937d008 *** 错误
- *** glibc detected *** ./IrayGui: double free or corruption (!prev): 0x003e47f8 ***
- *** glibc detected *** double free or corruption (out) ***
- *** glibc detected *** double free or corruption (fasttop)
- glibc detected double free or corruption error问题解决
- *** glibc detected *** double free or corruption (fasttop)
- *** glibc detected *** double free or corruption (out): *** Qt
- glibc detected *** double free or corruption (out): 0x0000000000515d20
- *** glibc detected *** xxx: double free or corruption (out): 0x000e1928 ***
- 关于执行free函数的时候提示” double free or corruption“错误的解释和解决办法
- C++错误解决:double free or corruption (out): 0x00000000011abe70 ***
- double free or corruption 错误解决办法
- debug c++ 经验积累(1)-double free or corruption (!prev)
- double free or corruption (!prev): 0x080644c8 ***
- [转]double free or corruption (!prev): 0x080644c8 ***
- c++ double free or corruption (!prev)