|
|
||||||
как избежать дублирования в RAM своих типов?24.06.2021, 07:31. Показов 1524. Ответов 15
Метки нет (Все метки)
1. сразу прошу прощения за непрофессиональную трактовку
2. суть не в байтах/мегабайтах а в самом вопросе - дублирование Написал небольшой класс, внутри создал структуру, для простоты примера возьмём такую
Во вторых я ожидал что оперативка уменьшиться на 1 байт. Она уменьшилась на 2. я про это нигде не нашёл инфы но (поправьте меня если это не так) думаю это изза того что: 1 байт отжирает сам тип наших данных/структуры. причём этот байт(или другой размер при другой структуре) условно говоря заканчивается на закрывающей фигурной скобке. а второй байт отжирает объявленная наша переменная указаного типа/структуры, т.е. сама data.правильно? А теперь собственно вопрос: если мне нужна только одна единственная переменная данного типа. т.е. этот тип используется единожды на все века ТО есть ли какойто способ создать такую переменную без дублирования размера в оперативке ? незнаю, написать какойто атрибут (перед/после структуры) или там использовать какието ассемблерные вставки, любой способ так чтоб data заняла один байт а не два ?
0
|
||||||
| 24.06.2021, 07:31 | |
|
Ответы с готовыми решениями:
15
Как избежать дублирования кода в Си Как избежать дублирования пользователей? Как избежать дублирования сообщений ? |
|
Вездепух
12922 / 6789 / 1818
Регистрация: 18.10.2014
Сообщений: 17,178
|
|||||
| 24.06.2021, 07:48 | |||||
|
0
|
|||||
|
Just Do It!
|
|
| 24.06.2021, 09:17 | |
|
0
|
|
|
|
||
| 24.06.2021, 18:33 [ТС] | ||
|
XLAT, в моём примере тоже самое. чем ваш пример отличается от моего ?
и вы не внимательно читали а читалили ?
TheCalligrapher, я сразу предупредил что не профессионал в сишной лексике. любая программа при выполнени занимает какойто объём оперативки. можно написать две программы , которые будут одинаково занимать место на жестком диске. выдавать одинаковый результат. но занимать разный объём в оперативной памяти. оперативка умешилась - это значит что доступный свободный объем оперативной памяти уменшился.
0
|
||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||||
| 24.06.2021, 18:50 | ||||
![]() Так что давайте вы начнете с того, что у вас уже попросили: Добавлено через 3 минуты "Сам тип данных" существует только на этапе компиляции и никакой "оперативки" в программе не "отжирает".
0
|
||||
|
Вездепух
12922 / 6789 / 1818
Регистрация: 18.10.2014
Сообщений: 17,178
|
|||
| 24.06.2021, 19:13 | |||
|
1
|
|||
|
Just Do It!
|
|
| 24.06.2021, 21:41 | |
|
0
|
|
|
|
|||||||||||||||||
| 28.06.2021, 17:24 [ТС] | |||||||||||||||||
|
XLAT, извините если неясно объяснил... я имел ввиду что сам тип и перменная этого типа съели выделенный размер. в данном примере каждый по байту...
DrOffset, сори, я видел что попросили, но не получается уже "поймать" такой код, чтоб продемонстрировать разницу. на данный момент имея скажем такую структуру
1) когда структура была 1 байт компилятор выходит её так сильно оптимизировал что она вообще "пропала" из оперативки. правда я не понимаю как он мог так её оптимизировать при том что if (output.leadzero) {..} продолжало работать2) а уже когда структура стала занимать 2 целых байта компилятор не смог её оптимизировать и она уже "всплыла" скушав 2 байта в оперативки.
0
|
|||||||||||||||||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|||
| 28.06.2021, 19:18 | |||
|
Однако ничего точно утверждать без полного кода, который вы упорно не хотите предоставить, нельзя. То или иное поведение, оптимизации, очень сильно зависят от контекста, а его-то как раз вы и не даете. Добавлено через 2 минуты
0
|
|||
|
|
|
| 28.06.2021, 19:22 | |
|
alexbmd, используй std::vector<bool> и перестань изобретать велосипед
0
|
|
| 28.06.2021, 19:35 | |
|
Не по теме: Kuzia domovenok, насколько я помню, у него там что-то вроде Arduino. Так что это не вариант для него.
0
|
|
|
Вездепух
12922 / 6789 / 1818
Регистрация: 18.10.2014
Сообщений: 17,178
|
||
| 28.06.2021, 19:59 | ||
|
0
|
||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 29.06.2021, 20:08 | ||
|
alexbmd, любые битовые поля наполняют структуры, состоящей из целого числа байтов (не битов!). Потому что байт - минимальная единица, с которой могут работать процессоры. Так что пока битовых полей по 1 биту меньше или равно 8, то занимает 1 байт, если 9 и до 16 включительно - 2 байта, и т.д.
Ключевое слово case в качестве имени поля недопустимо.Добавлено через 4 минуты
0
|
||
|
|
|
| 30.06.2021, 16:58 [ТС] | |
|
DrOffset, пока не получается подобрать лаконичный и работающий код... показывающий разницу... а не потому что "у меня велосипеда не было" (с) Печкин
![]() TheCalligrapher, не похоже. если я добавлю другой мембер класса volatile char a = 100;. оперативка уменьшится на один а не на два.https://stackoverflow.com/ques... me-using-c запускаю отсюда скрипты и чтото они все разный результат дают на одной и той же системе TRam_, да я это знаю. говоря выше про структуру из 10 бит я знаю что она занимает 2 байта ровно. но еще зависит не только от полей но и типа. {unsigned a:1} будет занимать 4 байта а не 1. и я в начале немог понять почему.
0
|
|
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|
| 30.06.2021, 17:05 | |
|
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 30.06.2021, 18:13 | ||
unsigned в С и С++ это один из псевдонимов типа unsigned int, который в 32-битных системах занимает 4 байта. Так что если объявляется даже 1 битовое поле для этого типа, то будет выделено место под всю переменную этого типа. А вот сделали бы поле unsigned char - бы бы 1 байт.По выравниванию - если сделаете {unsigned short a:1; unsigned char b:1;} то структура будет занимать не 3 байта, а 4 из-за выравнивания.
0
|
||
| 30.06.2021, 18:13 | |
|
Помогаю со студенческими работами здесь
16
Как избежать дублирования записей?
как избежать дублирования подключения библоитек Как избежать дублирования в составном ключе
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|