c - Duplicating a data structure with pointers
问题描述
I'm trying to duplicate my data structure that contains a pointer and a integer. But I'm not sure if it is the right way to do so.
Here is my structure:
struct sample_t {
int x;
void *y;
};
Here is my function:
struct sample_t *dup(struct sample_t *sample){
struct sample_t *dup_sample = malloc(sizeof (sample));
dup_sample->x = sample->x;
dup_sample->y = malloc(sizeof(sample->y));
dup_sample->y = sample->y
return dup_sample;
}
解决方案
此代码复制指向sample
新分配的结构的结构的内容:
struct sample_t *dup(struct sample_t *sample) {
struct sample_t *dup_sample = malloc(sizeof *sample);
*dup_sample = *sample;
return dup_sample;
}
请注意,您分配的内存必须有足够的空间容纳数据,并且必须具有*sample
(结构)的大小,而不是sample
(地址)的大小。
至于副本,做作struct1 = struct2
就够了。
推荐阅读
- python - psycopg2 - ImportError:导入 _psycopg 时 DLL 加载失败:操作系统无法运行 %1
- node.js - 无法安装 Botium CLI "npm install -g botium-cli" 给出错误信息
- flutter - DataTable中的Flutter DropdownButton
- c - 找到具有最大值的元素的索引。使用 AVX512 指令的绝对值
- python - 错误:尝试在 Jupyter Notebook 中创建 iframe 时出现“内容安全策略指令:“frame-ancestors 'self'”
- node.js - 找不到命令“nodejs”,但可以安装:sudo apt install nodejs in ububtu
- javascript - 未保存的更改,在用户被重定向之前重定向提示
- sqoop2 - sqoop2 作业运行错误,表 'api_open_platform.input_data' 不存在
- node.js - nodejs中的错误“Cast to Number failed for value "undefined" at path 有什么解决方案”
- php - 如何在 PHP List 的 1 值中设置依赖于 List 的 2 值和相反的值