在指针中复制数据

时间:2011-05-12 10:05:51

标签: c pointers

如何复制另一个指针所指向的数据?

我有以下

void *startgpswatchdog(void *ptr)
{
    GPSLocation *destination;
    *destination = (GPSLocation *) ptr;

这样做会正确吗?

我释放传递给它后传递给线程的数据,所以我需要复制数据。

3 个答案:

答案 0 :(得分:10)

如果要复制数据,则应通过malloc分配新内存,然后通过memcpy复制内存。

void *startgpswatchdog(void *ptr)
{
    GPSLocation *destination = malloc(sizeof(GPSLocation));
    memcpy(destination, ptr, sizeof(GPSLocation));
}

答案 1 :(得分:0)

如果您要复制的指针实际指向某个位置,则可以执行此操作:

void *startgpswatchdog(void *ptr)
{
    GPSLocation *destination = malloc( sizeof( GPSLocation ) );
    *destination = * (GPSLocation *) ptr;
}

或者更好:

void *startgpswatchdog(void *ptr)
{
    GPSLocation destination;
    destination = * (GPSLocation *) ptr;
}

答案 2 :(得分:0)

在分配指针指向的地址之前,需要分配内存。 为什么你需要一个指针?为什么不用

void *startgpswatchdog(void *ptr)
{
GPSLocation destination;
destination = (GPSLocation) *ptr;
}

以后如果你需要这个变量地址,只需使用

&destination

只是不要忘记它的局部变量:)