在此代码中,这是正确的方法吗?
float pf = (float) malloc (sizeof(float));
这不是正确的方法。在几个不同的严重级别上,它是不正确的。
首先,动态分配任何类型的对象都会返回指向对象的指针,而不是对象本身。
动态分配的浮点数将返回一个指向浮点数的指针,因此声明为float *pf = (float*) ...
这意味着强制类型转换为(float*) not (float)
。
更深入,因为使用malloc的语言标记是C ++,所以这是不正确的,或者充其量是过时的。使用new和delete,而不是malloc和free。
代替C样式转换(float *),static_cast将是现代的C ++选择。
在编译并给出正确结果的意义上,可以容易地将代码固定为正确的。然后,从“有效”到“最佳实践”又迈出了一大步。