WriteConsoleOutputCharacter崩溃了控制台应用程序

WriteConsoleOutputCharacter crashing the Console Application

本文关键字:应用程序 控制台 崩溃 WriteConsoleOutputCharacter      更新时间:2023-10-16

尝试使用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)有一个破损的。

变量 written 指向在哪里?该函数将取消该参数以设置书面字符的数量。如果该变量未初始化,它将具有不确定的值,并且似乎指向一个随机位置,在被验证时会导致不确定的行为

而是使用普通的DWORD并使用操作员地址&

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

,或者如果您对写了多少个字符不感兴趣,请通过nullptr