C++ 调用GetSystemTime()函数时出现分段错误(Windows)
我在处理分割错误时遇到问题。以下健全性检查抛出一个:C++ 调用GetSystemTime()函数时出现分段错误(Windows),c++,windows,C++,Windows,我在处理分割错误时遇到问题。以下健全性检查抛出一个: #include <windows.h> int main() { LPSYSTEMTIME startTime; GetSystemTime(startTime); } #包括 int main() { LPSYSTEMTIME开始时间; GetSystemTime(startTime); } 然而,我在一个大得多的程序中使用了相同的代码,它运行起来没有问题。我尝试在不同的地方添加延迟,以防问题源于GetSy
#include <windows.h>
int main()
{
LPSYSTEMTIME startTime;
GetSystemTime(startTime);
}
#包括
int main()
{
LPSYSTEMTIME开始时间;
GetSystemTime(startTime);
}
然而,我在一个大得多的程序中使用了相同的代码,它运行起来没有问题。我尝试在不同的地方添加延迟,以防问题源于GetSystemTime()
中的某种多线程,但它没有解决问题
我在代码块中使用MinGW GCC进行编译。
LPSYSTEMTIME
是指向SYSTEMTIME
结构的指针。您没有初始化指针,因此它指向场景的某个地方,因此存在访问冲突/seg错误
为了使代码正常工作,必须确保指针指向有效的
SYSTEMTIME
结构。根据,Microsoft明确警告您,为指针传递NULL将导致访问冲突。LPSYSTEMTIME
是指向SYSTEMTIME
结构的指针。您没有初始化指针,因此它指向场景的某个地方,因此存在访问冲突/seg错误
为了使代码正常工作,必须确保指针指向有效的
SYSTEMTIME
结构。根据,Microsoft明确警告您,为指针传递NULL将导致访问冲突。您使用的是未初始化的指针。这样做效果更好:
#include <windows.h>
int main()
{
SYSTEMTIME startTime;
GetSystemTime(&startTime);
}
#包括
int main()
{
系统时间开始时间;
GetSystemTime(&startTime);
}
您正在使用未初始化的指针。这样做效果更好:
#include <windows.h>
int main()
{
SYSTEMTIME startTime;
GetSystemTime(&startTime);
}
#包括
int main()
{
系统时间开始时间;
GetSystemTime(&startTime);
}
LPSYSTEMTIME
是指向SYSTEMTIME
的指针,但尚未初始化
请尝试以下方法:
SYSTEMTIME startTime = { 0 };
GetSystemTime(&startTime);
LPSYSTEMTIME
是指向SYSTEMTIME
的指针,但尚未初始化
请尝试以下方法:
SYSTEMTIME startTime = { 0 };
GetSystemTime(&startTime);
LPSYSTEMTIME是指针,您需要分配内存或在LPSYSTEMTIME中释放LP并调用函数,如中所示:
SYSTEMTIME startTime;
GetSystemTime(&startTime);
LPSYSTEMTIME是指针,您需要分配内存或在LPSYSTEMTIME中释放LP并调用函数,如中所示:
SYSTEMTIME startTime;
GetSystemTime(&startTime);
要使用LPSYSTEMTIME,应编写以下内容:
SYSTEMTIME systemTime; //allocation of memory
printf("%p\n", &systemTime.wDay); // we can see address of wDay for example.
LPSYSTEMTIME st = &systemTime;
GetSystemTime(st);
printf("%d \n", st->wDay); //display result
printf("%d \n", (*st).wDay); //display the same result
要使用LPSYSTEMTIME,应编写以下内容:
SYSTEMTIME systemTime; //allocation of memory
printf("%p\n", &systemTime.wDay); // we can see address of wDay for example.
LPSYSTEMTIME st = &systemTime;
GetSystemTime(st);
printf("%d \n", st->wDay); //display result
printf("%d \n", (*st).wDay); //display the same result
谢谢我真的不喜欢微软为每件事定义一个不同的名字——这只会让每件事变得更加混乱。一般来说,当你看到LP时,他们指的是长指针。。。(历史悠久)。通常,如果从类型中剥离LP,则堆栈上具有分配存储的实际结构。。。e、 g.
SYSTEMTIME
,然后您就可以通过启动时间了
谢谢。我真的不喜欢微软为每件事定义一个不同的名字——这只会让每件事变得更加混乱。一般来说,当你看到LP时,他们指的是长指针。。。(历史悠久)。通常,如果从类型中剥离LP,则堆栈上具有分配存储的实际结构。。。e、 g.SYSTEMTIME
,然后您将通过&startTime