我有一个结构
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中的malloc p_my_t,B有N个线程并且可以访问它
在A中开始删除,但我不能简单地释放它,因为B中的线程可能仍在使用它.
所以我调用一个函数,将p_my_t的地址传递给B,在B中将其地址设置为NULL,这样B中的其他线程就不能再使用了
从B回电后,我在A中释放内存
注意:没有标准的方法来通过进程之间的共享内存来管理内存分配.你将不得不做一些相当仔细的思考发生了什么.
不要memset
用来初始化空指针,因为这会将内存设置为所有位零,这不能保证是空指针的表示,只需这样做:
p_my_t = NULL;
或等效的:
p_my_t = 0;