Многоточная библиотека 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() безусловно, это не способ достичь того, что вы хотите.

Другие вопросы по тегам