如何使用memset将指向内存的指针设置为NULL? [英] how to set pointer to a memory to NULL using memset?
本文介绍了如何使用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屋!
查看全文