私はJPEG_ServerとJPEG_Clientという2つのクラスを持っています。memcpy()は、別のクラス変数にコピーするクラスで呼び出された後に例外をスローします。
class JPEG_Server
{
public:
unsigned char recv_buf[6];
};
そしてJPEG_Clientクラスで、私はその送信機能でmemcpy関数を使用してrecv_bufへ* BUFの内容をコピーしようとしています:JPEG_Serverクラスの中に私はのは、次の宣言を言わせています。
void JPEG_Client::send_data(char *buf, int len) //buf is coming from another class
{
memcpy(&JPEG_Server->recv_buf[0], &buf, len)
}
ただし例外がスローされ、.asmに入力されます。
例外は、このようなものです:
はException thrown at 0x00C85579 in JPEG_Client.exe: 0xC0000005: Access violation writing location 0x00000000.
If there is a handler for this exception, the program may be safely continued.
は、誰も私を助けたり、このような関数を使用して何が間違っていることをコメントすることができますか?
'場所0x00000000'は、いないに関わらず' unsigned char型のrecv_buf [6] 'あなたがNULL''に書いている – ikleschenkov
メンバーは、 'recv_buf'が初期化されないされるようになります。 –
[mcve]を提供してください。関数が呼び出されるコンテキストは、間違いなく問題の要因です。明らかな可能性は、 'JPEG_Server'がオブジェクトを指していないか、' len'が '6'や' buf'の文字数を超えていることです。また、 'memcpy()'の '&buf'の'& 'は、文字をコピーすることを意図している場合には厳密には正しくありません。 – Peter