代码之家  ›  专栏  ›  技术社区  ›  Dave

如何使用memset将指向内存的指针设置为空?

  •  4
  • Dave  · 技术社区  · 15 年前

    我有一个结构

    typedef struct my_s {
    
       int x;
       ...
    } my_T;
    
    my_t * p_my_t;
    

    我想设置的地址 p_my_t NULL 到目前为止,我就是这么做的:

    memset (&p_my_t, 0, sizeof(my_t*))
    

    但我觉得这不太对劲。正确的做法是什么?


    修正问题-提出一个更复杂的问题 :

    我想做的是:

    • 两个过程,A和B
    • A、B中的MaloC pYyMyt具有N个线程,并且可以访问它。
    • 开始在A中删除,但我不能简单地释放它,因为B中的线程可能仍然使用它。
    • 因此,我调用函数,将pyMyTyt的地址传递给B,以将其地址设置为B中的null,因此B中没有其他线程可以使用。
    • 从B打回来后,我在A中释放内存

    注意:没有标准的方法可以通过进程之间的共享内存来管理内存分配。你必须对发生的事情做一些相当仔细的思考。

    9 回复  |  直到 12 年前