typedef struct{
int len;
char*ptr;
}SDM_OCTET_STRING;
因为SDM_OCTET_STRING结构体内存有指针,因此其内存地址不一定是连续的,不能直接将整个结构体memcpy至指定的数组指针中。因此需要像以下做法去复制:
typedef struct{
int len;
char*ptr;
}SDM_OCTET_STRING;
SDM_OCTET_STRING *normal_data = calloc(1, sizeof(SDM_OCTET_STRING));
SDM_OCTET_STRING *data = calloc(1, sizeof(SDM_OCTET_STRING));
data->len = strlen(sdata);
data->ptr = calloc(data->len, sizeof(char *));
memcpy(data->ptr, sdata, strlen(sdata));
normal_data->len = strlen((const char *)data->ptr) + sizeof(data->len);
normal_data->ptr = calloc(normal_data->len, sizeof(char));
memcpy(normal_data->value, &data->len, sizeof(data->len));
memcpy(normal_data->value + 4, data->ptr, data->len);
以上是工作日常中碰到的一个小问题,如果有更好的复制方法或者上述内容有问题,希望各位指出。