Я выполняю тестирование, и ниже приведен фрагмент кода, который выдает мне ошибку: Необработанное исключение по адресу 0x00956faa в myprogram.exe: 0xC0000005: Местоположение чтения с нарушением прав доступа 0xcccccccc.
Функция:
ECommand(unsigned char CBuffer[], const CDBuffer_t * const SdBuffer_Ptr)
Кусок кода:
unsigned char CBuffer[11];
memset(CBuffer,0,sizeof(uint8_t)*4);
CBuffer[2] = 0x02;
CDBuffer_t sendBuffer;
sdBuffer.buffer = static_cast<uint8_t *>(malloc(sizeof(uint8_t)*8));
memset(sdBuffer.buffer,0,sizeof(uint8_t)*8);
CBuffer[6] = 0x02;
ECommand(CBuffer,&sdBuffer);
получение ошибки по адресу:
ECommand(CBuffer,&sdBuffer);
Также
typedef struct CDBuffer_t
{
uint8_t *buffer;
uint16_t count;
uint16_t size;
uint16_t status;
} CDBuffer_t;
Если требуется дополнительная информация, дайте мне знать. Я знаю, что это как-то связано с доступом к памяти, но я не могу понять, пожалуйста, помогите мне избавиться от сбоя программы из-за вышеуказанного исключения. Спасибо.
malloc
, а неnew
). - person SurvivalMachine   schedule 12.08.2016new
в C++;) За исключением очень немногих особых случаев. - person Violet Giraffe   schedule 12.08.2016malloc
илиnew
. - person SurvivalMachine   schedule 12.08.2016ECommand
требует от своих параметров. - person molbdnilo   schedule 12.08.2016ECommand
и вы не можете спросить их, правильно ли вы его используете, или, по крайней мере, его документацию? Посторонним невозможно догадаться, кроется ли проблема в коде тестирования или вы нашли ошибку вECommand
. (То, что вы не инициализируете всеsendBuffer
, выглядит очень подозрительно.) - person molbdnilo   schedule 12.08.2016