У меня есть односторонняя связь между сервером и клиентом с использованием «named pipe». Он работает до сих пор хорошо, но если я закрываю клиентскую программу (нажатием определенной кнопки), я получаю сообщение об ошибке: «Ошибка проверки времени выполнения №2» - поврежден стек вокруг буфера переменной.Сбой проверки выполнения на C++ # 2 - поврежден стек вокруг переменной «buffer»
Я знаю, что буферный массив из именованного канала выделяет память, но после длительного поиска в 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;
}
Нет ничего плохого в отправленном коде. Проблема где-то в коде, который вы не отправляли. – john
«буферный массив из именованного канала выделяет память» не имеет большого смысла. Что ты пытаешься сказать? – john