1

我在处理分段错误时遇到了麻烦。以下健全性检查抛出一个:

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

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

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

4

5 回答 5

4

LPSYSTEMTIME是指向SYSTEMTIME结构的指针。您没有初始化指针,因此它指向风景中的某个地方,因此出现访问冲突/段错误。

为了使代码工作,你必须确保指针指向一个有效的SYSTEMTIME结构。根据MSDN 文档,Microsoft 明确警告您为指针传递 NULL 将导致访问冲突。

于 2013-07-31T19:41:45.307 回答
4

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

#include <windows.h>
int main()
{
    SYSTEMTIME startTime;
    GetSystemTime(&startTime);
}
于 2013-07-31T19:41:58.143 回答
3

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

SYSTEMTIME startTime;
GetSystemTime(&startTime);
于 2013-07-31T19:42:29.303 回答
2

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

试试这个:

SYSTEMTIME startTime = { 0 };
GetSystemTime(&startTime);
于 2013-07-31T19:42:18.847 回答
1

要使用 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
于 2020-11-19T10:16:26.530 回答