memcpy() 在 class 中被调用以复制另一个 class 变量后抛出异常。

memcpy() throws exception after it gets called in a class to copy in another class variable.

我有两个 class,一个是 JPEG_Server,另一个是 JPEG_Client。在 JPEG_Server class 里面,我有以下声明:

class JPEG_Server
{
   public:
    unsigned char recv_buf[6];
};

并且在 JPEG_Client class 中,我试图在其发送函数中使用 memcpy 函数将 *buf 的内容复制到 recv_buf 中。

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. 

任何人都可以帮助我或评论使用这样的函数有什么问题吗?

如果您想使用 memcpy,您需要足够的堆内存(目标 - recv_buf)。

你的recv_buf指向NULL,这意味着它被初始化为NULL。给他分配足够的堆内存:

void JPEG_Client::send_data(char *buf, int len) //buf is coming from another class
{
    JPEG_Server->recv_buf = new char[len]
    memcpy(&JPEG_Server->recv_buf[0], &buf, len)
}