c - 如何让 void 指针具有与结构指针相同的内容?
问题描述
我正在尝试制作一个与 void 指针一起使用的哈希表的抽象版本。而且我无法让我的指针包含指向其他结构的值。
我尝试使用将指针复制到其他结构,memcpy
但不知何故,这不起作用,当我尝试使用从已经强制转换到所需结构的指针访问其他结构时,我收到了一个 void 指针,我收到了段错误。
值得注意的是,calloc
考虑到要放入其中的内容的大小,我会记住 void 指针。
void *connectionInfoStructToPutInHashTable = commonHashTableArguments->connectionInfoStruct;
void *existingElementPointer = localSearchForExistingElement(commonHashTableArguments);
if(existingElementPointer == NULL){
return;
}
int connectionInfoStructSize = commonHashTableArguments->connectionInfoStructSize;
memset(existingElementPointer, 0, connectionInfoStructSize);
memcpy(existingElementPointer, connectionInfoStructUpdated, connectionInfoStructSize);
(*((int *)existingElementPointer)) = (*((int*)connectionInfoStructUpdated));
*(void**)existingElementPointer = connectionInfoStructUpdated;
我曾尝试使用memcpy
, 之前从目标位置擦除所有数据,但这不起作用,并且在将 void 指针转换回来后,我在访问转换指针内的指针时遇到了段错误。
另外,我尝试使用 void 指针指向结构本身(在代码中的编号 3 下)并且它有效,但我真的希望我的 void 指针是数组的一部分,它们具有必要的然后释放那部分内存我不需要。
我不需要的内存部分是connectionInfoStructToPutInHashTable
代码中所指的。就像指向其他结构的指针的包装器一样。
解决方案
推荐阅读
- javascript - 仅当我运行 webpack --watch 时出现“ReferenceError:文档未定义”?
- wysiwyg - 在使用 SummerNote 编辑器的“插入图像”时,我可以在我的服务器上对目录进行硬编码以插入图像吗
- python - Django:: 无法更新表单
- python - 为什么合并的文件会比其输入文件少一行?
- wordpress - 将 woocommerce 结帐字段设为只读
- python - 在 3d 线上为给定 z 插入 xy 值的最快方法
- laravel - 请求通过但不更新数据库
- xquery - 在 VSC 中打开 MarkLogic API Doc 上下文相关帮助
- java - 如何从 ant antfile 任务中获取属性
- solidity - 使用 tron 和 tronbox 编译 openzeppelin ERC721 失败