winapi FillConsoleOutputAttribute 程序崩溃

winapi FillConsoleOutputAttribute program crash

有这些功能

void setPixel(SHORT x, SHORT y, WORD color) {
  COORD pos = {x, y};
  LPDWORD out;
  FillConsoleOutputAttribute(console,color,1,pos,out);
}

void setScreenSize(SHORT x, SHORT y) {
  COORD size = {x, y};
  SetConsoleScreenBufferSize(console,size);
}

我在 screenSize():

之后尝试调用 setPixel() 时收到错误消息
int main() {
  HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  setScreenSize(120,40); // works well if setPixel is not called after
  setPixel(40,12,GREEN); // works well if setScreenSize is not called
}

上面的程序崩溃了。我无法在 FillConsoleOutputAttribute() 之后调用 GetLastError(),这似乎会导致错误并立即使程序崩溃。我在 the reference.

中没有找到任何内容

什么可能导致程序崩溃,如何解决?

你的 setPixel 函数应该是这样的:

void setPixel(SHORT x, SHORT y, WORD color) {
  COORD pos = {x, y};
  DWORD out;
  FillConsoleOutputAttribute(console,color,1,pos, &out);
}

在您的版本中,您将未初始化的指针 out 传递给 FillConsoleOutputAttribute