Ошибка C++: необработанное исключение: место чтения с нарушением прав доступа

Я выполняю тестирование, и ниже приведен фрагмент кода, который выдает мне ошибку: Необработанное исключение по адресу 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;

Если требуется дополнительная информация, дайте мне знать. Я знаю, что это как-то связано с доступом к памяти, но я не могу понять, пожалуйста, помогите мне избавиться от сбоя программы из-за вышеуказанного исключения. Спасибо.


person mentaal coder    schedule 12.08.2016    source источник
comment
Этот код больше похож на C, чем на C++ (с использованием malloc, а не new).   -  person SurvivalMachine    schedule 12.08.2016
comment
@SurvivalMachine: вы также не должны использовать new в C++;) За исключением очень немногих особых случаев.   -  person Violet Giraffe    schedule 12.08.2016
comment
на самом деле основной код написан на c, а для тестирования используется c++   -  person mentaal coder    schedule 12.08.2016
comment
@VioletGiraffe правда, я не говорил, что здесь нужно malloc или new.   -  person SurvivalMachine    schedule 12.08.2016
comment
Невозможно сказать, не зная, что ECommand требует от своих параметров.   -  person molbdnilo    schedule 12.08.2016
comment
Какая дополнительная информация требуется, например, вся функция ECommand? или что-то из этого @molbdnilo   -  person mentaal coder    schedule 12.08.2016
comment
@mentaalcoder Поскольку вы тестируете, у вас нет доступа к разработчику ECommand и вы не можете спросить их, правильно ли вы его используете, или, по крайней мере, его документацию? Посторонним невозможно догадаться, кроется ли проблема в коде тестирования или вы нашли ошибку в ECommand. (То, что вы не инициализируете все sendBuffer, выглядит очень подозрительно.)   -  person molbdnilo    schedule 12.08.2016