2014-10-29 124 views
-2

我有一个结构体和一个指向它的某个实例的指针,现在我想创建一个指向该实例的新指针,而不依赖于第一个指针,这样当我改变第一个指针,第二个指针仍然指向那个实例。 这里是一个代码片段:将指针的引用复制到另一个指针C

struct 
{ 
    int some; 
    int variables; 
} someStruct; 

someStruct *a=malloc(sizeof(someStruct)); 
a->some=10; 
a->variables=20; 
someStruct *b; 
b=a; 
a=NULL; 
Thread1 
{ 
    /// some operations on "b" 
    free(b); 
} 

Thread2 
{ 
    free(a); 
} 

在我的计划,B也成为NULL,我怎么能避免呢?在下面的

+0

它还有另一种名为sommStruct? – 2014-10-29 09:14:41

+1

你的代码是正确的(除了结构错字),但你必须用'b'来释放内存。 – 2014-10-29 09:16:58

+2

发布完整的代码。没有理由''b''应该用你显示的代码'NULL'。 – 2014-10-29 09:17:19

回答

0

B就不会成为NULL:

sommStruct *b; 
b=a; 
a=NULL; 
+0

@ 1336087我只是回答了问题,显示的程序代码片段没有任何缺陷,通过值复制指针,然后将源代码设置为NULL不会对先前创建的副本产生影响,对吧?那么,为什么downvote? – 2014-10-29 09:16:21

+3

我做过了,对不起评论。我很新,所以也许这不是最好的事情。基本上说“你的问题无效”的答案不应该是一个评论吗? – Dettorer 2014-10-29 09:21:42