当前位置:  开发笔记 > 编程语言 > 正文

如何使用memset将内存指针设置为NULL?

如何解决《如何使用memset将内存指针设置为NULL?》经验,为你挑选了1个好方法。

我有一个结构

typedef struct my_s {

   int x;
   ...
} my_T;

my_t * p_my_t;

我想设置的地址p_my_tNULL,到目前为止这是怎么了,我试着这样做:

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中释放内存

注意:没有标准的方法来通过进程之间的共享内存来管理内存分配.你将不得不做一些相当仔细的思考发生了什么.



1> Robert Gambl..:

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

p_my_t = NULL;

或等效的:

p_my_t = 0;


推荐谁?0不像NULL那样"表达",i = NULL表明我是一个指针,i = 0不是.
最好使用NULL.它更具可读性,并且在NULL定义发生变化的可能性很小的情况下,您的代码不会中断.
推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有