调用GetSystemTime()函数时出现分段错误(Windows)

时间:2013-07-31 19:39:08

标签: c++ windows

我在处理分段错误时遇到问题。以下完整性检查会抛出一个:

#include <windows.h>
int main()
{
    LPSYSTEMTIME startTime;
    GetSystemTime(startTime);
}

但是,我在一个更大的程序中使用了相同的代码,它运行没有问题。我已经尝试在各个地方添加延迟,以防问题源于GetSystemTime()内的某种多线程,但它没有解决问题。

我正在使用CodeBlocks中的MinGW-GCC进行编译。

5 个答案:

答案 0 :(得分:4)

LPSYSTEMTIME是指向SYSTEMTIME结构的指针。你没有初始化指针,所以它指向风景的某个地方,因此访问违规/ seg错误。

为了使代码有效,您必须确保指针指向有效的SYSTEMTIME结构。根据{{​​3}},Microsoft明确警告您,为指针传入NULL将导致访问冲突。

答案 1 :(得分:4)

您正在使用未初始化的指针。这样做效果更好:

#include <windows.h>
int main()
{
    SYSTEMTIME startTime;
    GetSystemTime(&startTime);
}

答案 2 :(得分:3)

LPSYSTEMTIME是一个指针,您需要分配内存或者您需要在LPSYSTEMTIME中松开LP并调用该函数,如下所示:

SYSTEMTIME startTime;
GetSystemTime(&startTime);

答案 3 :(得分:2)

LPSYSTEMTIME是指向SYSTEMTIME的指针,但尚未初始化。

请改为尝试:

SYSTEMTIME startTime = { 0 };
GetSystemTime(&startTime);

答案 4 :(得分:0)

对于使用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
相关问题