我试图使用timer_create()函数,但是我遇到了网络错误:
*** glibc detected *** /media/.../Menu: malloc(): memory corruption: 0x0805d0f8 ***
我对该功能的调用如下:
if (timer_create(CLOCK_REALTIME, &stSigEvent, &(pStruct->tTimer)) != -1)
以及以下定义:
timer_t tTimer; /* in the struct pStruct */
struct sigevent stSigEvent;
现在我的节目中没有免费电话。
我没有选择运行valgrind。 感谢。
答案 0 :(得分:1)
您会收到此错误
*检测到glibc * /media /.../Menu:malloc():内存损坏:0x0805d0f8 *
如果您正在尝试访问未由您分配的内存区域,或者您必须溢出分配,例如分配4个字节并访问5个字节。
要回答你的问题,请使用pStruct构造一个struct变量或一个struct指针 如果它是变量,则应将timer_create更改为此
if(timer_create(CLOCK_REALTIME,& stSigEvent,&(pStruct.tTimer))!= -1)//注意方法已从' - >&更改#39;到'。'
答案 1 :(得分:1)
我猜您的代码中有一些memory corruption 其他和之前实际调用代码timer_create
您应该使用gcc -Wall -g
和使用valgrind 进行编译;如果您的系统上有valgrind
,我看不出有任何理由可以避免使用-fsanitize=address
。
请注意,最新的valgrind 3.9可以在许多平台上运行,不仅是x86,还有ARM等......
尝试使用最近的 GCC 4.9(或甚至4.8)编译器 - 或者使用最近的 Clang编译器 - ,{ {3}};也就是说,将{{1}}添加到编译(和链接)标志中。