C ++ WinAPI - WriteConsoleOutputCharacter崩溃控制台应用程序

时间:2017-03-08 10:59:01

标签: c++ windows winapi output console-application

尝试使用WriteConsoleOutputCharacter函数时,应用程序崩溃。

COORD pos;
pos.X = 0;
pos.Y = 0;

HANDLE buffer = GetStdHandle(STD_OUTPUT_HANDLE);
LPDWORD written;

char* str = "s";
WriteConsoleOutputCharacter(buffer, str, strlen(str), pos, written);

但WriteConsole功能正常工作:

WriteConsole(buffer1,str,strlen(str),written,NULL);

我没有收到任何错误,但Windows“应用程序停止响应”通知,我无法使用调试器,因为我正在使用的IDE(Dev C ++ 5.11)有一个损坏的。

提前致谢!

1 个答案:

答案 0 :(得分:2)

变量written 指向的位置?该函数将取消引用该参数以设置写入的字符数。如果变量未初始化,则它将具有 indeterminate 值,并且看似指向随机位置,从而在被解除引用时导致未定义的行为

而是使用普通DWORD并使用地址运算符&

DWORD written;

WriteConsoleOutputCharacter(buffer, str, strlen(str), pos, &written);
//                                                         ^
//                         Note the address-of operator here

或者,如果您对编写的字符数不感兴趣,请改为通过nullptr