У меня есть (односторонняя) связь между сервером и клиентом с использованием «именованного канала». Пока все работает нормально, но если я закрываю клиентскую программу (нажатием определенной кнопки), я получаю сообщение об ошибке: «Ошибка проверки времени выполнения № 2 — стек вокруг переменной« буфер »поврежден».
Я знаю, что буферный массив из именованного канала выделяет память, но после долгих поисков в Google я не нашел способа решить эту проблему (освободить ее).
Я должен сказать, что я новичок на C ++.
Код:
char buffer[1];
DWORD numBytesRead = 0;
BOOL result = ReadFile(
pipe,
buffer, // the data from the pipe will be put here
sizeof(buffer), // number of bytes allocated
&numBytesRead, // this will store number of bytes actually read
NULL // not using overlapped IO
);
// object recognized, write data from inertaCube into file
if (buffer[0] != '0'){ // do something }
// close program by pressing left CTRL-button
if (GetAsyncKeyState(VK_LCONTROL)){
myMeasurement.close();
CloseHandle(pipe);
return 0;
}
sizeof(buffer)
даст вам размер char
в вашем коде, который не // number of bytes allocated
,