Я запускаю cppcheck (c ++ 11) для библиотеки, которая содержит много приведений, подобных приведенным ниже:
// Allocates various buffers
int* i_buffer = (int*) calloc (500, sizeof (int));
float* f_buffer = (float*) i_buffer;
Для этих приведений я вижу следующее сообщение:
"portability", "invalidPointerCast", "Приведение между целым числом * и числом с плавающей точкой *, которые имеют несовместимое представление двоичных данных."
Как правильно выполнить приведенный выше тип приведения? Каково потенциальное последствие приведения указателя так, как показано выше?