这是ny堆栈
malloc() at 0xb7dfd333
strdup() at 0xb7e01866
tzset_internal() at 0xb7e2ef68
__tz_convert() at 0xb7e2f26a
localtime() at 0xb7e2d901
Send_Trace() at my_trace.c:265 0x8053373
这是有问题的代码..
void Send_Trace(const char const *Trace_Text, ...)
{
time_t time_now = time(NULL);
tm = *localtime(&time_now);
它通常工作正常,但偶尔会抛出上面显示的seg故障。
有什么想法吗?
答案 0 :(得分:3)
有什么想法吗?
malloc
或free
内的任何崩溃都是99.999%的案例,这是其他地方早期堆损坏的结果。
可能导致malloc
中的后续崩溃的堆损坏示例:在未分配的内存上调用free
,在某个指针上调用free
两次,溢出或下溢堆 - 分配缓冲区等等。
找到此类错误的最快方法是:valgrind(如果在您的平台上可用)或AddressSanitizer(在最新版本的Clang和GCC中实施)。