gpt4 book ai didi

c++ - 如何使用 memset 将指向内存的指针设置为 NULL?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:53:34 24 4
gpt4 key购买 nike

我有一个结构

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中的malloc p_my_t有N个线程可以访问
  • 开始在 A 中删除,但我不能简单地释放它,因为 B 中的线程可能仍在使用它。
  • 所以我调用一个函数,将 p_my_t 的地址传递给 B 以将它在 B 中的地址设置为 NULL,这样 B 中的其他线程就不能再使用了
  • 从 B 回调后,我然后释放 A 中的内存

注意:没有通过进程间共享内存管理内存分配的标准方法。您将不得不仔细考虑正在发生的事情。

最佳答案

不要使用 memset 来初始化空指针,因为这会将内存设置为所有位为零,这不能保证是空指针的表示,只需这样做:

p_my_t = NULL;

或等价物:

p_my_t = 0;

关于c++ - 如何使用 memset 将指向内存的指针设置为 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/398883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com