[英]'Segment fault' when calculating the elapsed time using std::chrono
我更改了此代碼並編寫了此函數:
#include <ctime>
#include <iomanip>
#include <iostream>
#include <chrono>
#define TIMER(name) Timer timer__(name);
class Timer
{
public:
Timer(const std::string& name) :
name_(name), start_(std::chrono::system_clock::now())
{
}
~Timer()
{
auto duration = std::chrono::system_clock::now() - start_;
std::cout << std::setw(90) << std::left << name_ << ": " << std::chrono::duration_cast<std::chrono::seconds>(duration).count() << "s" << std::endl;
}
private:
std::string name_ = 0;
std::chrono::time_point<std::chrono::system_clock> start_ ;
};
問題是有時我會遇到段錯誤。
用法:
把這樣的東西放在 main() 中:
TIMER("Total time");
我用 gcc 版本 5.2.1 編譯了程序。
有兩點說明:
1. 正如@Mankarse 所提到的,remove = 0;
來自std::string name_ = 0;
2. 從這里:
每個包含雙下划線 __ 或以下划線后跟大寫字母開頭的標識符都保留給實現以供任何使用。
因此,將Timer timer__(name)
更改為Timer my_timer(name)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.