为已分配的char数组分配值失败

1 c++

我只是为一个角色分配一些内存,然后想做一些指针算法.在这种情况下,我想将'\ x0a'写入字节32,如下所示:

#define HDR_SIZE 32   

int size = 52;

unsigned char *readXPacket = (unsigned char *) malloc (size * sizeof (unsigned char));
*readXPacket + HDR_SIZE = '\x0a';
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做时,我收到以下错误消息:赋值中的非值.谁知道这里有什么问题?

谢谢

Phi*_*ert 6

将您的作业更改为:

*(readXPacket + HDR_SIZE) = '\x0a';
Run Code Online (Sandbox Code Playgroud)


小智 6

显而易见的是什么问题:

readXPacket[HDR_SIZE] = '\x0a';
Run Code Online (Sandbox Code Playgroud)

这既短又清晰.当你使用C++时,为什么不说:

unsigned char * readXPacket = new unsigned char[size];
Run Code Online (Sandbox Code Playgroud)

或者更好的是:

std::vector <unsigned char> readXPacket( size );
Run Code Online (Sandbox Code Playgroud)

并让C++为您管理内存.


Pau*_*ell 5

尝试...

*( readXPacket + HDR_SIZE ) = '\x0a';
Run Code Online (Sandbox Code Playgroud)