times(NULL) Segmentation fault

/******************************************************************************
 *                   times(NULL) Segmentation fault
 * 说明:
 *     在PC机上times(NULL)是没问题的,但在嵌入式Linux上,貌似不传递参数是有可能
 * 会出问题的。
 *
 *                                         2017-7-6 深圳 龙华樟坑村 曾剑锋
 *****************************************************************************/

一、参考文档:
    1. Segmentation fault using ctime
        https://stackoverflow.com/questions/12338947/segmentation-fault-using-ctime
    2. Segmentation fault on time(0);
        https://stackoverflow.com/questions/1731802/segmentation-fault-on-time0
    3. segmentation fault (core dumped) error when using time function
        https://stackoverflow.com/questions/20939415/segmentation-fault-core-dumped-error-when-using-time-function

二、测试代码:
    #include <iostream>
    #include <sys/times.h>
    #include <unistd.h>

    using namespace std;

    int main()
    {
        unsigned long SysF = sysconf(_SC_CLK_TCK);
        struct tms tmp;

        while(1)
        {
            // unsigned long tick = times(NULL);    // don‘t use this. it may cause segmentation fault.
            unsigned long tick = times(&tmp);
            unsigned long RetUl = (1000 / SysF) * tick;

            cout << "tick: " << tick << " RetUl: " << RetUl << endl;

            usleep(10000);
        }

        return 0;
    }
时间: 2024-12-10 11:52:36

times(NULL) Segmentation fault的相关文章

Segmentation Fault的一种定位方法

1. 介绍 网上有很多Segmentation Fault的调试方法,下面这篇文件就很好 <Linux环境下段错误的产生原因及调试方法小结> 然而笔者在实际的使用中由于各种原因总觉得不够用 于是在网上找到了一种个人觉得更直接的方法 2. 原理 Segmentation Fault发生的时候,程序收到了信号11(SIGSEGV) 我们捕获该信号,然后利用事故发生时保存的寄存器现场加上栈信息定位到具体行 这里参考了< C/C++捕获段错误,打印出错的具体位置(精确到哪一行) > 使用其

结构体指针之 段错误 具体解释(segmentation fault)

一个网友问了我一个问题.一个C程序执行出现了段错误,这个问题非常好.非常多刚開始学习的人都easy犯这个错误,详细代码例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 这个编译没有问题,可是执行是段错误    Segmentation fault 由于你定义了一个结构体指针p.用来指向此类

你的C/C++程序为什么无法运行?揭秘Segmentation fault (1)

什么让你对C/C++如此恐惧? 晦涩的语法?还是优秀IDE的欠缺? 我想那都不是问题,最多的可能是一个类似这样的错误: 段错误(Segmentation fault) 这是新手无法避免的错误,也是老手极力回避也经常遇到的错误. 本篇,试图简略地剖析一段会引发这个错误的程序,带来一些启发. 先看两份代码,一份是错误的. 错误代码 #include "string.h" #include <stdlib.h> #include <stdio.h> void func

eclipse+CDT调试segmentation fault错误

先来看两段代码-- 错误代码: #include "string.h" #include <stdlib.h> #include <stdio.h> void test(char ** dest, char * src, int n) { (*dest) = (char*) malloc(sizeof(char) * n); strcpy(*dest, src); } int main(int argc, char** args) { char ** p = N

C&amp;C++——段错误(Segmentation fault)

C/C++中的段错误(Segmentation fault) Segment fault 之所以能够流行于世,是与Glibc库中基本所有的函数都默认型参指针为非空有着密切关系的.来自:http://oss.lzu.edu.cn/blog/article.php?uid_7/tid_700.html#comment 背景 最近一段时间在linux下用C做一些学习和开发,但是由于经验不足,问题多多.而段错误就是让我非常头痛的一个问题.不过,目前写一个一千行左右的代码,也很少出现段错误,或者是即使出现

SIGSEGV导致的Segmentation fault

code as below: f_read = fopen("records/frame_read.ini", "r"); fclose(f_read); in fact, records/frame_read.ini is not exist. when I used gdb to debug it, appears "Program received signal SIGSEGV, Segmentation fault. 0xb7ebefc7 in f

Segmentation fault(Core Dump)

Segmentation fault 这个提示还是比较常见的,这个提示就是段错误,这是翻译还是十分恰当的. Core Dump 有的时候给我们呈现的翻译很有趣是"吐核",但是实际上比较贴切的翻译是核心转储(是操作系统在进程收到某些信号而终止运行时,将此时进程地址空间的内容以及有关进程状态的其他信息写出的一个磁盘文件.这种信息往往用于调试),这个"吐核"的产生和王安博士有着一些关联,其实"吐核"这个词形容的很恰当,就是核心内存吐出来. 出现这种错误

你的java/c/c++程序崩溃了?揭秘段错误(Segmentation fault)(3)

前言 接上两篇: 你的C/C++程序为什么无法运行?揭秘Segmentation fault (1) 你的C/C++程序为什么无法运行?揭秘Segmentation fault (2) 写到这里,越跟,越发现真的是内核上很白,非一般的白. 但是既然是研究,就定住心,把段错误搞到清楚明白. 本篇将作为终篇,来结束这个系列,也算是对段错误和程序调试.寻找崩溃原因(通常不会给你那么完美的stackstrace和人性化的错误提示)的再深入. 本篇使用到的工具或命令: dmesg strace gdb l

Segmentation Fault错误原因总结

最近在项目上遇到了Segmentation Fault的错误,一直调试不出来是哪里出了问题,对于刚接触嵌入式的,也不知道该如何去调试一个项目,定位内存问题,纠结了好几天,好阿红整理下自己的思路.从头开始. 以下内容只为整理来自己使用的,大多来源于网络,感谢大家的分享: http://www.cnblogs.com/no7dw/archive/2013/02/20/2918372.html http://blog.chinaunix.net/uid-20780355-id-538814.html