Многоточная библиотека 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() получить объем памяти переменной?

3

Решение

Я не могу это проверить, и документация немного расплывчато, но есть метод с такой подписью:

int zkcm class::get_prec ( void ) const;

Который описан так:

Получите внутреннюю точность объекта, а именно точность, используемую для каждой части «этого» комплексного числа

Это может вернуть количество цифр, которое должно быть пропорционально количеству используемой памяти. Конечно, точное отношение — это деталь реализации. Сам класс, вероятно, просто содержит указатель на выделенный в куче буфер, в котором находятся цифры, и некоторую бухгалтерскую информацию. sizeof Оператор (в C ++) полностью статичен, т.е. оценивается во время компиляции.

1

Другие решения

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

sizeof() оценивается во время компиляции, и в языке C ++ нет способа изменить это значение во время выполнения, точка. Может быть какой-то интерфейс, который предоставляет необходимую вам информацию (прямо или косвенно), а может и нет. Но sizeof() безусловно, это не способ достичь того, что вы хотите.

1

По вопросам рекламы [email protected]