c++ linux时间冻结应用程序
C++ linux time freezes application
我正在导入<sys/time.h>
,并使用
struct time_t *start;
类有成员time_t *start;和成员函数getETA():
template <class S, class P>
double Task<S,P>::getETA()
{
time_t *stop;
time(stop);
return difftime(*stop , *start);
}
还要注意time_t *start是在类构造函数中初始化的。
每当我调用getETA()时,应用程序就会冻结。更有趣的是,我在主循环中的main.cpp中使用了相同的结构和代码,显然它也冻结了应用程序:
int main(int argc, char **argv)
{
...
time_t *start;
time(start);
...
}
我用错了吗?我记得在很久以前的一些应用程序中,我就是这样使用它的,它工作得很好。
你必须传递一个有效的指针给time()
函数。那么你为什么不这样做呢:
time_t start;
time(&start);
time_t stop;
time(&stop);
即不将start
和stop
声明为指针。将它们声明为非指针的自动变量。
如果你将它们声明为指针,那么你必须这样做:
time_t *start = new time_t;
time(start);
time_t *stop = new time_t;
time(stop);
//...
//Must deallocate the memory when you don't need them anymore
delete start;
delete stop;
但我不建议这样做。我建议你使用非指针变量
改为:
int main(int argc, char **argv)
{
...
time_t start;
time(&start);
...
}
问题是该函数期望一个指向有效time_t
的指针,但是您传递给它一个未初始化的time_t
指针,这会导致未定义的行为。
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- QT应用程序冻结
- QT应用程序接口冻结
- 如何在不冻结线程/应用程序的情况下减慢方法执行速度
- 在线程中复制文件以防止冻结应用程序
- 在C++中读取文件时应用程序冻结
- 监视C++OpenFrameworks应用程序是否冻结或内存泄漏,然后强制退出并重新启动
- 在这个基于对话框的应用程序中,GUI会在几秒钟后冻结
- 故意在 VB.NET 中冻结应用程序
- 如何在不冻结应用程序 1 的情况下从另一个应用程序 1 执行应用程序 2
- 在 android 上向 JNI 类添加私有字段会冻结应用程序
- Qt 应用程序在从 <QUrl>NetworkAccessManager->get() 回调访问 QList<QLlnkedList* >时冻结
- 为什么这个子网类应用程序冻结了
- Qt事件后,长例程冻结了我的应用程序一段时间
- Win32 API:打开对话框窗口后应用程序冻结
- c++ linux时间冻结应用程序
- wxWidgets应用程序在尝试启动新对话框时冻结
- 当添加一个用于监听网络的新线程时,应用程序冻结
- 更新CListCtrl时MFC应用程序冻结
- Linux应用程序在boost::thread::join时冻结