2015-01-14 3 views
1

Если вам предлагается либо вырастить сегмент текста, либо сегмент данных, какой набор критериев может определить выбор?Выращивание текстового сегмента по сравнению с ростом сегмента данных

Я не осведомлен о различиях и воздействии на время компиляции или исполнения с учетом различных конфигураций (динамически/статически связанных, PIC, non-PIC и т. Д.). Так что я спрашиваю, что такое компромиссы.

Более конкретный: он растет во время компиляции с использованием статического массива символов, в основном делая его const или нет, а константа, по-видимому, решает, заканчивается ли это в тексте или нет. Почему это?

ответ

2

Сегмент кода доступен только для чтения, требует загрузки (его можно выгружать непосредственно с диска) и могут использоваться совместно.

Напротив, сегмент данных доступен для записи (поддерживается файлом подкачки или ОЗУ) и, следовательно, не используется совместно.

Таким образом, если у вас есть выбор между ростом одного из них, предпочитайте меньший сегмент данных, так как в сегменте данных в общем объеме потребляет больше ресурсов, даже если ваша программа не запускается несколько раз одновременно ,

Там в дополнительное преимущество для маркировки все, что можно const:
Неспособность уважать тот факт, что данные не должны измениться, более вероятно, будут пойманы компилятором, и, если не позже во время выполнения (память-защита), вместо того, чтобы молчать ваше государство.

Смежные вопросы