【问题标题】:Unhandled exception at 0x00BF57F9 in Analog Clock.exe: 0xC0000005: Access violation reading location 0x00000000Analog Clock.exe 中 0x00BF57F9 处的未处理异常:0xC0000005:访问冲突读取位置 0x00000000
【发布时间】:2013-06-27 21:12:08
【问题描述】:
glRotatef((360/60) * newtime->tm_sec,0.0,0.0,1.0);

这是 Debugger 显示我的问题所在的行。 我正在使用time 函数。

struct tm *newtime;
time_t ltime;

【问题讨论】:

标签: c++ visual-studio opengl time.h


【解决方案1】:

您的newtime 变量等于NULL。这就是错误的“读取位置 0x00000000”部分告诉您的内容。它要么需要通过调用new 进行初始化,要么更改为不使用指针(这意味着在调用 glRotatef() 时使用点. 表示法访问成员tm_sec)。

这里有一个有用的链接:An example 如何使用 tm 结构。

【讨论】:

  • 我也在使用它来避免视觉工作室问题。此函数或变量可能不安全。考虑改用 localtime_s #ifdef _MSC_VER #define _CRT_SECURE_NO_WARNINGS #endif
  • 这是一个警告,错误使用该功能很容易导致内存溢出导致问题。他们建议的版本有一个限制器来解决这个问题。转到 MSDN 并查找该函数,那里也应该有一些示例代码。
  • 是的我已经解决了这个问题当我调试我的程序时这是什么-*newtime {tm_sec=??? tm_min=??? tm_hour=??? ...} tm `` tm_sec <Unable to read memory>
  • 这意味着要么该值在寄存器中并且无法被调试器读取,要么 newtime 尚未被赋值。如果它没有值,那么读取它会导致崩溃。查看我的链接,了解如何为 newtime 赋值。
  • 点击我的答案中的“示例”或 cmets 部分中的链接。
猜你喜欢
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-05
  • 2014-10-26
  • 1970-01-01
相关资源
最近更新 更多