Многоточная библиотека zkcm и sizeof()
Я использую многоточную библиотеку комплексных чисел ( zkcm) и хочу сравнить некоторые результаты, используя complex<double>
,
В какой-то момент я пытаюсь перепроверить память переменных, используя sizeof()
но я получаю один и тот же ответ (32) независимо от того, насколько большой памяти я выделяю переменные; т.е. следующий фрагмент печатает 32 независимо от того, что я использую внутри zkcm_set_default_prec()
:
zkcm_set_default_prec(128);
zkcm_class z;
cout << sizeof(z) << endl;
Есть ли другой способ, чем sizeof()
получить объем памяти переменной?
2 ответа
Я не могу проверить это, и документация немного расплывчата, но есть метод с этой подписью:
int zkcm class::get_prec ( void ) const;
Который описан так:
Получите внутреннюю точность объекта, а именно точность, используемую для каждой части "этого" комплексного числа
Это может вернуть количество цифр, которое должно быть пропорционально количеству используемой памяти. Конечно, точное отношение - это деталь реализации. Сам класс, вероятно, просто содержит указатель на выделенный в куче буфер, в котором находятся цифры, и некоторую бухгалтерскую информацию. sizeof
Оператор (в C++) полностью статичен, т.е. оценивается во время компиляции.
В какой-то момент я пытаюсь перепроверить память переменных с помощью sizeof(), но я получаю один и тот же ответ (32) независимо от того, насколько большой памяти я выделяю переменные
sizeof()
оценивается во время компиляции, и в языке C++ нет способа изменить это значение во время выполнения, точка. Может быть какой-то интерфейс, который предоставляет необходимую вам информацию (прямо или косвенно), а может и нет. Но sizeof()
безусловно, это не способ достичь того, что вы хотите.