如何复制另一个指针所指向的数据?
我有以下
void *startgpswatchdog(void *ptr)
{
GPSLocation *destination;
*destination = (GPSLocation *) ptr;
这样做会正确吗?
我释放传递给它后传递给线程的数据,所以我需要复制数据。
答案 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
只是不要忘记它的局部变量:)