如何使void指针与struct指针具有相同的内容?

时间:2019-04-18 15:25:42

标签: c

我正在尝试制作适用于void指针的哈希表的抽象版本。而且我无法使我的指针包含指向其他结构的值。

我尝试使用memcpy将指针复制到其他结构,但是以某种方式不起作用,当我尝试使用已经从类型转换为所需结构的指针访问其他结构时,我收到了一个空指针段故障。

值得注意的是,考虑到要放入其中的内容的大小,我calloc的空指针存储空间。

void *connectionInfoStructToPutInHashTable = commonHashTableArguments->connectionInfoStruct;
void *existingElementPointer = localSearchForExistingElement(commonHashTableArguments);
if(existingElementPointer == NULL){
    return;
}
int connectionInfoStructSize = commonHashTableArguments->connectionInfoStructSize;
  1. memset(existingElementPointer, 0, connectionInfoStructSize);

    memcpy(existingElementPointer, connectionInfoStructUpdated, connectionInfoStructSize);
    
  2. (*((int *)existingElementPointer)) = (*((int*)connectionInfoStructUpdated));

  3. *(void**)existingElementPointer = connectionInfoStructUpdated;

我尝试使用memcpy,以前从目标位置删除了所有数据,但这没有用,并且在向后投射void指针之后,我在访问位于指针内部的指针时遇到段错误。

此外,我尝试使用void指针指向结构本身(在代码中的数字3下),并且可以工作,但是我真的希望我的void指针(它们是数组的一部分)具有必要的内容,然后释放该部分不需要的内存。

P.s。我不需要的部分内存是代码中的connectionInfoStructToPutInHashTable所指。就像包装指向其他结构的指针一样。

0 个答案:

没有答案