Срок жизни строкового литерала в C
Я делаю пространство имён — множество пар «строка - объект». В функции инициализации я создаю статический массив, а потом копирую всю эту память в динамический, вот этак:
init() {
name_t names[2] = {
{"name1", obj1},
{"name2", obj2}
}
<...>
memcpy(global_namespace.names, names, size);
}
Здесь global_namespace — это структура, в которой есть указатель на имена.
А вопрос мой вот в чём: как долго будут жить строковые константы? Потом ведь нужно будет к ним обращаться — не хотелось бы, чтобы затёрлись. Мне думается, что компилятор положит их в неизменяемую память, и на протяжении всей жизни программы можно будет обращаться. Но они объявлены внутри функции и, вроде как, локальные объекты — это не повлияет?