取消引用空指针

时间:2013-03-05 19:55:40

标签: c++ dereference

我试图在C ++中编写一个非常简单的指针赋值,如下所示:

float  *src;
if(someCondition == true)
    src = somePointer;
else
    src = someOtherPointer;

然而,当我尝试访问src时,我收到一条警告,说“取消引用空指针(从变量src加载)”

另外,如果我尝试给src一些初始值:

float  *src = aPointer;

if(someCondition == true)
    src = somePointer;
else
    src = someOtherPointer;

我收到一条警告,说永远不会读取分配给src的初始值。尽管这似乎并没有影响到我想要做的事情,但我试图摆脱所有潜在的问题。这里似乎有什么问题?

感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:3)

大概somePointersomeOtherPointer中的一个或两个是0 / NULL

答案 1 :(得分:2)

由于您使用指针而不是引用,因此期望NULL成为指针的可能值。

检查NULL可能符合您的利益:

if(!src) {/*handle null case*/}

答案 2 :(得分:0)

似乎编译器不够聪明,无法意识到src将始终被初始化。虽然IDK为什么会认为poiter是NULL,但更有可能是垃圾值。这可以通过使用三元运算符(?:):

将初始化设置为单个语句来修复
float* src = someCondition ? somePointer : someOtherPointer;

编辑:

尝试将src初始化为NULL。这应该摆脱初始化警告,我怀疑它会创建一个未使用的值警告。