Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 克隆void*指向int的指针_C_Pointers_Clone - Fatal编程技术网

C 克隆void*指向int的指针

C 克隆void*指向int的指针,c,pointers,clone,C,Pointers,Clone,我有一个函数的签名: void* cloneInt(const void* i); 此int表示哈希函数的键。我需要有这个克隆函数,因为它在哈希表的通用实现的API中。这个函数是int实现的一部分,这个函数将作为指向我的通用实现将使用的函数的指针转发。 但我在理解上有一个问题:如何克隆int?我需要返回一个指针,它指向相同的int值,但在内存中的不同位置。这让我非常困惑。这将有效: #include <stdio.h> #include <stdlib.h> void

我有一个函数的签名:

void* cloneInt(const void* i);
此int表示哈希函数的键。我需要有这个克隆函数,因为它在哈希表的通用实现的API中。这个函数是int实现的一部分,这个函数将作为指向我的通用实现将使用的函数的指针转发。 但我在理解上有一个问题:如何克隆int?我需要返回一个指针,它指向相同的int值,但在内存中的不同位置。这让我非常困惑。

这将有效:

#include <stdio.h>
#include <stdlib.h>

void* cloneInt(const void* i)
{
    int *myInt = malloc(sizeof(int));
    *myInt = *(int*)i;
    return myInt;
}

int main(int argc, char** argv)
{
    int i=10;
    int *j;
    j = cloneInt(&i);
    printf("j: %d i: %d\n", *j, i);
    free(j);
}
这将有助于:

#include <stdio.h>
#include <stdlib.h>

void* cloneInt(const void* i)
{
    int *myInt = malloc(sizeof(int));
    *myInt = *(int*)i;
    return myInt;
}

int main(int argc, char** argv)
{
    int i=10;
    int *j;
    j = cloneInt(&i);
    printf("j: %d i: %d\n", *j, i);
    free(j);
}

为int分配内存并将*i存储在那里?这样行吗?void*cloneIntconst void*i{int myInt=int*mallocsizeofint;myInt=*i;return&myInt;}不,不会的,你需要创建int*myInt,你需要用*myInt=*i来分配它。我相信在进一步@Eyzuky之前你应该咨询一下。我完全取决于你是如何设计地图的。谁负责为存储的键和对象分配内存,地图还是用户?当释放它的时候?你为一个int分配内存并把*i存储在那里?这样行吗?void*cloneIntconst void*i{int myInt=int*mallocsizeofint;myInt=*i;return&myInt;}不,不会的,你需要创建int*myInt,你需要用*myInt=*i来分配它。我相信在进一步@Eyzuky之前你应该咨询一下。我完全取决于你是如何设计地图的。谁负责为存储的键和对象分配内存,地图还是用户?什么时候释放它?