|
Liebe23
|
||||||
Выделение памяти под типы данных - нужен совет!18.02.2007, 01:14. Показов 6205. Ответов 6
Метки нет (Все метки)
Подскажите, пожалуйста:
Внутри функции main() завожу подряд несколько переменных (new не использую, поэтому, как я понимаю переменные заносятся в стэк), и прошу вывести подряд их адреса. Например:
Результат выполнения программы меня поразил: ShortVar adress: 1245066 LongVar adress: 1245060 Var adress: 1245056 2 4 4 На переменную типа unsigned long int 6 байт! И сразу же он пишет, что она занимает всего 4! Затем я поменяла порядок объявления переменных в программе, но адреса НЕ изменились! То есть рез-т вывода адресов тот же. Только теперь переменная unsigned short int занимает 6 байт. (?!) И последний вопрос: почему меньший адрес имеет переменная, объявленная последней? Компилятор записывает их в обратном порядке?Зачем? Если кто может помочь разобраться - буду Очень признательна. правда, не понимаю - в чем тут дело. Спасибо
|
||||||
| 18.02.2007, 01:14 | |
|
Ответы с готовыми решениями:
6
Стандартные типы объектов в C++ и выделение памяти под них Выделение активного пункта меню. Нужен совет! Нужен совет по оперативной памяти |
|
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
|
|
| 27.02.2007, 10:32 | |
|
Совершенно неразумно определять размер переменной в байтах как разность адресов, для этого есть sizeof().
А по существу. У компилятора есть опции выравнивания данных: см. Proect Option\Advanced Compiler\Data alignment. Если указано Quad word, то для переменной типа BYTE может быть выделено до 8-и байтов. На эту опцию компилятора надо обращать особое внимание при передаче структур или сохранении их в файле, так как она влияет на размер структур.
0
|
|
|
1 / 1 / 0
Регистрация: 03.03.2007
Сообщений: 11
|
|
| 03.03.2007, 23:29 | |
|
Если проверять по адрессу то нада знать начало и конец.Т.к. 1245066
это начало, а что же не проверили начало следующей переменной?
0
|
|
|
0 / 0 / 0
Регистрация: 01.11.2006
Сообщений: 12
|
|
| 08.03.2007, 12:37 | |
|
ето все, муть!!!!Потому что указатель содержит адрес, а размер указателя равен 4 байтам!!!
0
|
|
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|
| 09.05.2009, 18:33 | |
|
1 Да там полюбому указатель на переменную, а не сама переменная.
2 Пользуйтесь sizeof зачем изобретать велосипед.
0
|
|
|
141 / 84 / 24
Регистрация: 21.10.2009
Сообщений: 429
|
|
| 28.07.2011, 12:47 | |
|
Во вложении пример работы с bass.dll
Он пишет с микрофона звук и вывод гистограмму. Так вот там в фунции void CALLBACK UpdateSpectrum(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2) при описании точек для гистограммы ясно дается именно такой пример: specbuf[y*SPECWIDTH+x]=abs(y-SPECHEIGHT/2)*2+1; specbuf имеет тип BYTE т.е. BYTE *specbuf;
0
|
|
|
|
|||||||||||
| 28.07.2011, 13:02 | |||||||||||
|
Я если честно балдею над вами! читайте книги, в конце концов для кого их тогда пишут???
самый простейший пример что бы разобраться Вот, простейший пример(правда под линукс, по этому размеры отличаются)
0
|
|||||||||||
| 28.07.2011, 13:02 | |
|
Помогаю со студенческими работами здесь
7
Нужен совет по выделению памяти Выделение памяти под файл Выделение памяти под указатель Выделение памяти под массив Выделение памяти под матрицу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Музыка, написанная Искусственным Интеллектом
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 .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|