尝试使用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)有一个损坏的。
提前致谢!
答案 0 :(得分:2)
变量written
指向的位置?该函数将取消引用该参数以设置写入的字符数。如果变量未初始化,则它将具有 indeterminate 值,并且看似指向随机位置,从而在被解除引用时导致未定义的行为。
而是使用普通DWORD
并使用地址运算符&
:
DWORD written;
WriteConsoleOutputCharacter(buffer, str, strlen(str), pos, &written);
// ^
// Note the address-of operator here
或者,如果您对编写的字符数不感兴趣,请改为通过nullptr
。