Я использую константу на параметрах функции, которые являются ссылками (или указатели), которые находятся только [в] данных и не будут изменены функцией. Значение, когда цель использовать ссылку состоит в том, чтобы не копировать данные а не позволять изменять переданный параметр.
константа Помещения на булевской переменной b параметр в Вашем примере только помещает ограничение на реализацию и не способствует для интерфейса класса (хотя не изменение параметров обычно рекомендуется).
функциональная подпись для
void foo(int a);
и
void foo(const int a);
является тем же, которое объясняет Ваш.c и .h
Asaf
Ой, это неприятно.
Происходит то, что N
будет кэшировать результаты, чтобы ускорить будущие вычисления, если они вам снова понадобятся . Иногда это абсолютно то, что вам нужно, но иногда это просто ломает мир. К счастью, у вас есть несколько вариантов. Один из них - использовать команду ClearSystemCache
, которая делает именно то, что написано на банке. После того, как я некоторое время прогонял ваш непараллелизованный цикл (прежде чем мне надоело и прервал вычисления), MemoryInUse
сообщил об использовании ~ 160 МБ. При использовании ClearSystemCache
это уменьшилось примерно до 14 МБ.
Одна вещь, на которую вы должны обратить внимание, вместо программного вызова ClearSystemCache
- это использовать SetSystemOptions
для изменения поведения кэширования. Вам следует взглянуть на SystemOptions ["CacheOptions"]
, чтобы увидеть, какие есть возможности.
EDIT: Неудивительно, что кеширование вызывает большую проблему для более сложных выражений. Необходимо где-то спрятать копии этих выражений, а более сложные выражения требуют больше памяти.