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

时间:2009-08-03 10:42:09

标签: c++

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

#define HDR_SIZE 32   

int size = 52;

unsigned char *readXPacket = (unsigned char *) malloc (size * sizeof (unsigned char));
*readXPacket + HDR_SIZE = '\x0a';

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

由于

3 个答案:

答案 0 :(得分:6)

将作业更改为:

*(readXPacket + HDR_SIZE) = '\x0a';

答案 1 :(得分:6)

显而易见的是:

readXPacket[HDR_SIZE] = '\x0a';

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

unsigned char * readXPacket = new unsigned char[size];

或者更好的是:

std::vector <unsigned char> readXPacket( size );

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

答案 2 :(得分:5)

...试

*( readXPacket + HDR_SIZE ) = '\x0a';