C gmtime()抛出linux 64位中的分段错误(内核转储)
今天,我在Manjaro Linux(64位)中使用C的lib time.h进行了一些测试C gmtime()抛出linux 64位中的分段错误(内核转储),c,archlinux,C,Archlinux,今天,我在Manjaro Linux(64位)中使用C的lib time.h进行了一些测试 我正在使用Manjaro64位(Openbox),使用GCC4.9.1构建。你知道这个问题吗?当我在窗口中尝试时,一切正常。您的代码是正确的。我用ManjaroLinux、GCC4.9.2、Clang3.5.0和valgrind对它进行了测试。崩溃意味着要么您没有显示原始代码,要么其他地方有问题。我在某处找到了答案。 给你 我首先包括sys/time.h,但编译器无法识别它,它返回的值为int。因此有必要
我正在使用Manjaro64位(Openbox),使用GCC4.9.1构建。你知道这个问题吗?当我在窗口中尝试时,一切正常。您的代码是正确的。我用ManjaroLinux、GCC4.9.2、Clang3.5.0和valgrind对它进行了测试。崩溃意味着要么您没有显示原始代码,要么其他地方有问题。我在某处找到了答案。 给你
我首先包括
sys/time.h
,但编译器无法识别它,它返回的值为int
。因此有必要包括time.h
,以便编译器能够识别ctime
函数。使用调试器和/或valgrind来查明问题。您的代码在我的Linux系统上运行良好。使用localtime
作为变量名不是一个好主意。这是标准函数的名称。也无法在此处重现错误。适用于不同版本的gcc和clang。请使用Linux发行版的帮助频道报告您的问题。投票关闭,因为错误不可再现。如果是这样,编译器应该在编译原始代码时发出警告/错误
#include <stdio.h>
#include <time.h>
int main() {
time_t localtime;
time(&localtime);
printf("local time: %s", ctime(&localtime));
struct tm * utcTime = gmtime(&localtime);
time_t gmtTime = mktime(utcTime);
printf("local time: %s", ctime(&gmtTime));
return 0;
}
local time: Tue Oct 14 13:22:41 2014
Segmentation fault (core dumped)