system_clock和ctime导致C ++中未初始化的值内存错误

时间:2018-04-29 20:32:28

标签: c++ memory-leaks valgrind

我正在编写一个实用程序函数来从系统时钟获取当前小时。我已经包括其他必要的图书馆;我的代码完全编译并运行。

当我运行valgrind时,我收到的错误是"未初始化的值是由堆栈分配创建的#34;并且相应的条件跳转取决于未初始化的值"错误。我已将其缩小到以下功能:

size_t get_hour(){
    chrono::duration<int,ratio<60*60*24>> one_day (1);
    chrono::system_clock::time_point today = chrono::system_clock::now();
    time_t tt = chrono::system_clock::to_time_t (today);
    const char hr[2] = {ctime(&tt)[11], ctime(&tt)[12]};
    return (size_t)stoi(hr);
}

正常运行(即将正确的时间作为两位数字返回)。然而,这些记忆错误使我认为我通过将ctime(&tt)[11]ctime(&tt)[12]分配给const char hr[2]

来做错事

我的第一个猜测是,如果当前小时是单个数字,则从ctime调用中未定义第11或第12个索引 - 但我在不同时间打印这些值并且它们看起来都很好要正确打印。更重要的是,无论何时何时,我都会收到这些错误。

有人能指出我正确的方向吗?我还没有找到许多正确使用ctime和system_clock的相关示例。

谢谢!

0 个答案:

没有答案