最近我看到以下片段代码:
if ((rgb = (fp16 *)malloc(width*height*sizeof (*rgb)*3)) == NULL)
Run Code Online (Sandbox Code Playgroud)
rgb被声明为某种类类型的指针.在上面的代码中,malloc()接受的参数是width*height*sizeof(*rgb)
所以它是某种自引用初始化(如果我可以通过给出这个名称来调用它!)即belore rgb指针由malloc分配,它在调用malloc时解除引用它.
在这个特定的代码中,我看到指针rgb没有初始化为NULL或任何东西.
这些代码的行为是什么?
正常运作或
由于空指针取消引用而导致崩溃,或者
车库指针取消引用
谢谢,
-广告.
sizeof不评估它的操作数,所以在这种情况下sizeof(*rgb)将返回rgb's类型的大小,我假设是fp16 *.
完全有效的C代码.
如果它确实评估它并且指针只是一些没有初始化值的声明指针,那么你将得到未定义的行为.