如果我的结构定义如下:
struct image{
unsigned int width, height;
unsigned char *data;
};
还有 2 个这种类型的变量:
struct image image1;
struct image image2;
我想将数据从 image1 传输到 image2 的数据(假设 image1 已经写入了一些数据,而 image2 已经通过 malloc 或 calloc 分配了数据)。如何做呢?非常感谢。
最佳答案
假设 struct image
的两个实例指向相同的 data
是不可取的,那么 memcpy()
不能用于复制结构
。复制:
- 为目标结构分配内存
- 根据源
data
为目标data
缓冲区分配内存 - 分配
宽度
个成员 memcpy()
data
成员。
例如:
struct image* deep_copy_image(const struct image* img)
{
struct image* result = malloc(sizeof(*result));
if (result)
{
/* Assuming 'width' means "number of elements" in 'data'. */
result->width = img->width;
result->data = malloc(img->width);
if (result->data)
{
memcpy(result->data, img->data, result->width);
}
else
{
free(result);
result = NULL;
}
}
return result;
}
关于在C中将数据从一个结构复制到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16360781/