如何使用memset将指向内存的指针设置为NULL? [英] how to set pointer to a memory to NULL using memset?

查看:900
本文介绍了如何使用memset将指向内存的指针设置为NULL?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个结构

typedef struct my_s {

   int x;
   ...
} my_T;

my_t * p_my_t;

我想将p_my_t的地址设置为NULL,到目前为止,这是我尝试执行的操作:

I want to set the address of p_my_t to NULL and so far this is how I've tried to do this:

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

这在我看来并不正确.正确的方法是什么?

This doesn't not look right to me though. What is the correct way of doing this?

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

这就是我想要做的:

  • A和B这两个过程
  • A,B中的malloc p_my_t具有N个线程并且可以访问
  • 在A中开始删除,但由于B中的线程可能仍在使用它,所以我不能简单地将其释放.
  • 所以我调用一个函数,将p_my_t的地址传递给B,以在B中将其地址设置为NULL,这样B中的其他线程都无法使用了.
  • 从B回叫后,我释放了A中的内存

NB:没有标准方法可以通过进程之间的共享内存来管理内存分配.您将不得不仔细考虑正在发生的事情.

推荐答案

请勿使用memset初始化空指针,因为这会将内存设置为所有零位,这不能保证是空值的表示形式指针,只需执行以下操作:

Don't use memset to initialize a null pointer as this will set the memory to all bits zero which is not guaranteed to be the representation of a null pointer, just do this:

p_my_t = NULL;

或等价物:

p_my_t = 0;

这篇关于如何使用memset将指向内存的指针设置为NULL?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆