我在处理分段错误时遇到了麻烦。以下健全性检查抛出一个:
#include <windows.h>
int main()
{
LPSYSTEMTIME startTime;
GetSystemTime(startTime);
}
但是,我在一个更大的程序中使用了相同的代码,它运行没有问题。我已经尝试在各个地方添加延迟,以防问题源于内部的某种多线程GetSystemTime()
,但它并没有解决问题。
我在 CodeBlocks 中使用 MinGW-GCC 进行编译。
LPSYSTEMTIME
是指向SYSTEMTIME
结构的指针。您没有初始化指针,因此它指向风景中的某个地方,因此出现访问冲突/段错误。
为了使代码工作,你必须确保指针指向一个有效的SYSTEMTIME
结构。根据MSDN 文档,Microsoft 明确警告您为指针传递 NULL 将导致访问冲突。
您正在使用未初始化的指针。这效果更好:
#include <windows.h>
int main()
{
SYSTEMTIME startTime;
GetSystemTime(&startTime);
}
LPSYSTEMTIME 是一个指针,您需要分配内存,或者您需要在 LPSYSTEMTIME 中释放 LP 并调用函数,如下所示:
SYSTEMTIME startTime;
GetSystemTime(&startTime);
LPSYSTEMTIME
是指向 的指针SYSTEMTIME
,但尚未初始化。
试试这个:
SYSTEMTIME startTime = { 0 };
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