【发布时间】:2017-09-14 10:11:41
【问题描述】:
我想将unsigned char* 数据设置为std::shared_ptr<uint8_t> 并将该指针传递给一个函数,并且在该函数中我想从std::shared_ptr<uint8_t> 获取unsigned char* 数据。
其实我想读取图片数据如下。
FILE *fp=fopen("/data/FR/AjayPatil.jpg","rb");
if(fp)
{
fseek(fp, 0, SEEK_END);
data_size=ftell(fp);
fseek(fp, 0, SEEK_SET);
jdata=( unsigned char *)malloc(data_size+1);
if (!jdata)
{
fclose(fp);
return;
}
fread(jdata, data_size, 1, fp);
fclose(fp);
}
如您所见,现在我在jdata 中有数据。
那么如何将这些数据复制到std::shared_ptr<uint8_t> 中呢?
我的图片结构如下。
typedef struct Image
{
uint16_t width;
uint16_t height;
uint8_t depth;
std::shared_ptr<uint8_t> data;
}
成功复制数据后,以下是取回数据的正确方法吗?
unsigned char *imagedata=data.get(); // here data means std::shared_ptr<uint8_t> data;
【问题讨论】:
-
为什么你真的需要
std::shared_ptr,std::vector<uint8_t>不够吗? -
您不会“将数据复制到指针中”。您将指针指向数据。没有复制步骤。
-
作为@user0042,你应该使用
std::vector。 -
有理由使用
uint8_t吗?您似乎想在两端使用unsigned char。 -
@Galik 不一样吗?