Описание тега storage-duration

Используйте для вопросов, когда важна продолжительность хранения объектов.
1 ответ

C++ static vs порядок уничтожения продолжительности хранения потока

Рассмотрим, как в C++ существуют эти две длительности хранения (среди прочих): статическая длительность хранения и длительность хранения потока., Далее рассмотрим этот код: static MyClassA a; thread_local static MyClassB b; Допустим, что "a" и "b" м…
1 ответ

Локальная переменная глобальной области видимости

Рассмотрим следующий код: #include <iostream> #include <thread> using std::cout; using std::thread; thread_local int a; void foo() { a = a + 1; cout << a << "\n"; } void bar() { cout << a << "\n"; } void baz() { c…
11 июл '14 в 15:34
2 ответа

Продолжительность хранения и инициализация члена структуры в C++

#include <iostream> using namespace std; struct A { // Some Other Code int x; }; A a1; int main(){ A a2; cout << "a1.x = " << a1.x << endl; cout << "a2.x = " << a2.x << endl; return 0; } Стандарт C++14 (ISO/…
1 ответ

Продолжительность хранения базовых символьных данных с пользовательским строковым литералом

Быстрая настройка: я хочу передать строки в моей программе в виде указателя и размера. У меня есть класс String и пользовательский литерал для построения литеральных строк: struct String { const char *ptr; size_t sz; }; inline constexpr String opera…
3 ответа

Инициализировать размер массива в C на уровне файла

Я хотел бы инициализировать массив на основе вычислений, но компилятор выдает мне ошибку, когда я пытаюсь это сделать (я использую GCC версии 6.3.0): const int SCREEN_WIDTH = 800; const int SCREEN_HEIGHT = 600; char textgrid[SCREEN_HEIGHT/16][SCREEN…
06 янв '18 в 19:07
4 ответа

Инициализация статического члена данных

Почему не происходит инициализация статического члена данных по умолчанию? В следующем примере struct data_member { data_member(){ cout << "data_member\n"; } ~data_member(){ cout << "~data_member\n"; } }; struct Y { static data_member m;…
10 июл '14 в 17:01
2 ответа

Как программа узнает, нужно ли инициализировать статическую переменную?

Как в заголовке - как программа узнает, что foo уже инициализируется, когда функция вызывается во второй раз: int getFoo() { static int foo = 30; return foo; } int main() { getFoo(); getFoo(); } Я хочу знать, хранит ли программа какую-то дополнитель…
1 ответ

Исключение переменной со статической продолжительностью хранения

Я столкнулся со следующим правилом (3.7.1/2 N3797): Если переменная со статической продолжительностью хранения имеет инициализацию или деструктор с побочными эффектами, она не должна быть удалена, даже если она не используется, за исключением того, …
10 июл '14 в 14:03
1 ответ

Должны ли статические объекты вообще инициализироваться?

С прагматики языка программирования, Скотт Время жизни объекта обычно соответствует одному из трех основных механизмов распределения памяти, используемых для управления пространством объекта: Статическим объектам присваивается абсолютный адрес, кото…
1 ответ

Являются ли статические члены данных и статические методы класса в C++ статическими объектами?

С прагматики языка программирования, Скотт Время жизни объекта обычно соответствует одному из трех основных механизмов распределения памяти, используемых для управления пространством объекта: Статическим объектам присваивается абсолютный адрес, кото…
16 сен '17 в 15:23
4 ответа

Может ли статическая функция c вернуть локальный массив символов?

В библиотеке zflog я видел этот код static char* lvl_char(const int lvl) { switch (lvl) { case ZF_LOG_VERBOSE: return "VERBOSE\0"; case ZF_LOG_DEBUG: return "DEBUG\0"; case ZF_LOG_INFO: return "INFO\0"; case ZF_LOG_WARN: return "WARN\0"; case ZF_LOG…
0 ответов

Нелокальный объект с длительностью хранения потока

Непонятно, почему объект с длительностью хранения потока не инициализируется по умолчанию? Например: #include <iostream> using std::cout; struct S { S(){ cout << "S\n"; } ~S(){ cout << "~S\n"; } }; thread_local S s; int main() { } …
11 июл '14 в 13:10
1 ответ

Вывод ошибки (указатель)

Я программист базового уровня. Я написал функцию в программе AC, возвращающую массив (через указатель, ссылка на программу прилагается), но есть некоторая ошибка. Выход должен быть 12, но выход 10. Может ли кто-нибудь помочь мне определить ошибку (е…
20 дек '17 в 13:45
3 ответа

Как статическая переменная не переназначается внутри функции

У меня есть вопрос относительно ответа на этот вопрос, но я не могу его комментировать, потому что у меня менее 50 представителей. Мне было интересно в ответ foo() вызывается несколько раз, а статической переменной назначается одинаковое количество …
1 ответ

Сохраняет ли C++ default-initialization предшествующую нулевую инициализацию?

Если конструктор C++ для объекта со статической продолжительностью хранения не инициализирует элемент, требуется ли это для сохранения предыдущей инициализации нуля или он оставляет элемент с неопределенным значением? Мое чтение спецификации C++ зак…
1 ответ

Тип ссылки и продолжительность хранения

Сначала приведу определение срока хранения (с. 3.7.1/1 N3797): Срок хранения - это свойство объекта, которое определяет минимальный потенциальный срок хранения хранилища, содержащего объект. Но 3.7.1/3 сказал: Категории продолжительности хранения пр…
10 июл '14 в 10:48
1 ответ

Срок хранения замененного подобъекта

Что касается кода ниже int main() { struct S { int i; } s { 42 }; new (&s.i) int { 43 }; } [basic.stc]/2 говорит Динамическая продолжительность хранения связана с объектами, созданными выражением new. Есть похожий вопрос, где было решено, что ра…
1 ответ

Есть ли в Python статические объекты, объекты стека и объекты кучи?

С прагматики языка программирования, Скотт Время жизни объекта обычно соответствует одному из трех основных механизмов распределения памяти, используемых для управления пространством объекта: Статическим объектам присваивается абсолютный адрес, кото…
1 ответ

Оптимизация статических объектов хранения в контексте потока

Может ли компилятор оптимизировать статический объект хранения в контексте многопоточной программы? Я спрашиваю его, чтобы знать, генерирует ли переменная, объявленная как статическая, например, побочный эффект, когда используется в функции, вызывае…
19 июн '19 в 00:06
0 ответов

Как обеспечить, чтобы аргументы указывали на объекты только в статическом хранилище?

Я хотел бы убедиться, что аргумент, данный функции, указывает (или ссылается) на объект, который имеет статический класс продолжительности хранения. Решение должно работать с C++11 без специальных расширений компилятора. Наиболее похожий вопрос, кот…
18 авг '19 в 13:08