gpt4 book ai didi

c - 当我们有值而不是指针时如何检查空指针取消引用

转载 作者:行者123 更新时间:2023-12-01 14:30:49 24 4
gpt4 key购买 nike

C 语言中 gmtime 函数的语法是:

struct tm *gmtime(const time_t *timer);

通常调用 gmtime 是

tm *xx = gmtime( &curr_time );

这将使检查 gmtime 函数是否返回 NULL 指针变得更加容易。

if (xx)
return sucess;

但是它并不安全,因为返回值指向一个静态分配的结构,该结构可能会被后续调用任何日期和时间函数覆盖。


所以更安全的方法之一是使用

time_t curr_time = time(0);
tm xx = *gmtime( &curr_time );

但是万一调用是这样的

如何在取消引用 xx 变量之前检查 null?

“不安全”来源 -- https://linux.die.net/man/3/gmtime

最佳答案

引用手册页

The gmtime() function converts the calendar time timep to broken-down time representation, expressed in Coordinated Universal Time (UTC). It may return NULL when the year does not fit into an integer. The return value points to a statically allocated struct which might be overwritten by subsequent calls to any of the date and time functions. The gmtime_r() function does the same, but stores the data in a user-supplied struct.

所以,你只需要做

time_t now = time(NULL);
struct tm result;

if (!gmtime_r(&now, &result)) {
// error
}

然后,“结果”不能被另一个时间函数调用覆盖。

关于c - 当我们有值而不是指针时如何检查空指针取消引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49253271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com