Можно ли сказать компилятору не сохранять переменную в исполняемом файле? [закрыто]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Можно ли сказать компилятору не сохранять переменную в исполняемом файле? [закрыто]

Сообщение Anonymous »

Если в вашей программе есть статическая переменная, она может в конечном итоге сохраниться в результирующем двоичном файле в разделе данных или в разделе BSS. Все, что находится в разделе данных, хранится в самом двоичном файле, а BSS — это раздел памяти, инициализируемый загрузчиком программы нулевым значением.

Код: Выделить всё

char chararray[100'000'000] = {};

int main()
{
printf("%c", chararray[50000]);

}
В данном случае моя программа небольшая, в разделе BSS хранится chararray. Если я добавлю к этому массиву квалификатор const, размер исполняемого файла моей программы вырастет до 100 МБ. Я знаю, что это связано с тем, что любая переменная const находится в разделе RODATA, и это соответствует соглашению/правилам исполняемого/двоичного образа. Однако с точки зрения здравого смысла нет ничего, что обязательно требовало бы, чтобы эта переменная находилась внутри изображения. Итак, я считаю, что простое правило таково:

если 'const', оно попадает в RODATA, который находится внутри двоичного изображения.
Правильно ли я понимаю?
Есть ли способ не использовать эту переменную внутри изображения? Я имею в виду без удаления константы.

Подробнее здесь: https://stackoverflow.com/questions/790 ... executable
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»