Возвращает адрес переменной типа stati c в C - PullRequest
3 голосов
/ 27 февраля 2020

Безопасно ли возвращать адрес переменной типа stati c в C, как показано ниже?

uint8_t *return_static_const_addr(void)
{
    static const uint8_t values[2] = {0x01, 0x02};

    return values;
}

Ответы [ 2 ]

5 голосов
/ 27 февраля 2020

У него будет постоянный адрес во время выполнения, так что да, это безопасно.

0 голосов
/ 27 февраля 2020

Переменная stati c const здесь является локальной переменной, поэтому она не будет храниться в стеке и, следовательно, обычно не является поточно-ориентированной. Это также зависит от компилятора. Возвращать переменную stati c const было бы безопасно, если бы вы писали это, например, для C ++ 11, где такой тип динамической c инициализации локальной статистики c является потокобезопасным.

...