pipe — Ошибка проверки времени выполнения C ++ №2. Стек вокруг переменной ‘buffer’ поврежден

У меня есть (односторонняя) связь между сервером и клиентом с использованием «именованного канала». Пока все работает нормально, но если я закрываю клиентскую программу (нажатием определенной кнопки), я получаю сообщение об ошибке: «Ошибка проверки времени выполнения № 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;
}

0

Решение

sizeof(buffer) даст вам размер char в вашем коде, который не // number of bytes allocated,

0

Другие решения


По вопросам рекламы [email protected]