我在处理分段错误时遇到问题。以下完整性检查会抛出一个:
#include <windows.h>
int main()
{
LPSYSTEMTIME startTime;
GetSystemTime(startTime);
}
但是,我在一个更大的程序中使用了相同的代码,它运行没有问题。我已经尝试在各个地方添加延迟,以防问题源于GetSystemTime()
内的某种多线程,但它没有解决问题。
我正在使用CodeBlocks中的MinGW-GCC进行编译。
答案 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