那么拷贝的实现为什么不是memcpy(shared_hash_table, &hash_table, sizeof(my_struct *));
时间: 2024-04-22 20:27:39 浏览: 83
asm.zip_CPU assembler C++_内存拷贝
如果我们使用 `memcpy(shared_hash_table, &hash_table, sizeof(my_struct *));` 来将 `hash_table` 对象的地址拷贝到共享内存区域中,那么实际上只复制了一个指针的大小(通常是 4 或 8 个字节),而不是整个 Hash 表结构体的大小。这样的话,其他进程访问共享内存区域中的该地址得到的只是一个指针,而不是整个 Hash 表结构体,因此无法正确地访问 Hash 表中的元素。因此,我们需要使用 `memcpy(shared_hash_table, &hash_table, sizeof(my_struct));` 将整个 Hash 表结构体复制到共享内存区域中,这样其他进程才能正确地访问其中的元素。
阅读全文