Динамическое выделение памяти для массива с плавающей точкой - PullRequest
0 голосов
/ 21 мая 2018

Пытаясь понять некоторый код на C ++, я наткнулся на следующий код (и пытался понять его значение):

int SIZE = 256;
float* A = (float *) malloc(SIZE * sizeof(float*));
for (int i=0; i<M*K; i++) { A[i] = 0.0; }

Я хотел спросить, чем вышеизложенное отличается от следующего:

float* A = (float *) malloc(SIZE * sizeof(float));

Когда я компилирую код, обе версии "float * A =" компилируются и выполняются нормально.

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Float* - указатель.Независимо от того, на какой тип данных указывает указатель, его размер фиксирован и составляет 32 бита на 32-битной машине и 64-битной на 64-битной машине.

0 голосов
/ 21 мая 2018

... Я хотел спросить, чем это отличается от следующего ...

sizeof(float*) - это размер указателя для float.В большинстве систем это количество байтов в указателе, часто, но не всегда, размер регистров аппаратного адреса.sizeof(float) - это число байтов в формате с плавающей запятой, размер которого может совпадать или не совпадать с указателем.

...