C++ 中引用指针指向的变量会有问题吗?

查看 73|回复 4
作者:iqoo   
如下伪代码,现实中 ptr 是运行时动态获得的,并且确定不为 null 。
struct X {
  uint a;
  uint b;
};
auto ptr = (X*) malloc(sizeof(X));
auto &obj = *ptr;
obj.a = 11;
cout a a = 22;
cout
正常使用应该是 ptr->a, ptr->b 。但引用可以用 . 而不是 -> 看着更舒服些,不知有没有问题。

ptr-, Obj, PTR, cout

darer   
如果 ptr 是 null 那你创建 obj 的时候就 crash 了
tool2d   
用引用替代指针,不算是个好习惯。
如果你后续行有这种 obj = *ptr2; 会覆盖原值,且不太好调试,直接就现场翻车了。
blinue   
我经常用引用代替指针,没什么问题。至于 ptr 是否是 null ,要明确场景的前置条件。如果确定是非空的,就 assert ,否则 if
cnbatch   
malloc 获得的指针在解引用之前都应当先判断是否为 nullptr 。
不过既然你确定不为 nullptr ,那么单纯就谈这段代码的话,没问题,随便用,只要最后别忘了释放掉。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部