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)
}
我有两个 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)
}