|
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
|
||||||
Расположение переменных в памяти09.03.2017, 17:28. Показов 9563. Ответов 27
Метки нет (Все метки)
Было в Эккеле вот такое вот упражнение :
"Определить подряд два массива типа int. Сместить индекс от конца первого массива в начало второго и выполнить присваивание. Проверить, изменилось ли содержание второго массива". Так вот, когда я пытался сместить индекс от конца первого массива, ничего не получалось. Пришла мысль вывести адреса массивов. Каким-то образом, адрес указателя на первый массив лежал прямо за моим ВТОРЫМ массивом. Причем я перезапускал несколько раз, всегда одно и тоже. И я решил смещать указатель на второй массив, заполняя им первый. Удивительно, но все получилось. В Qt Creator этот зверь работает именно так как надо, без падений. В Visual Studio 15 падает с повреждением стека. Но и там сначала лежит второй массив, затем первый. И частично код там отрабатывает, падает в самом конце,после вывода - на выходе из мейн. Как это понимать? И почему вообще получается так, что переменная объявленная "позже" лежит в памяти "раньше"? Причем массивы здесь вроде бы статические. То есть, не VLA-массивы, про которые я немного почитал.
0
|
||||||
| 09.03.2017, 17:28 | |
|
Ответы с готовыми решениями:
27
Расположение переменных в памяти Целые числа и расположение их в памяти Расположение полей структуры в памяти |
|
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
|
|||||||
| 09.03.2017, 21:52 [ТС] | |||||||
0
|
|||||||
|
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
|
||||||||
| 09.03.2017, 22:24 | ||||||||
1
|
||||||||
|
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
|
||
| 09.03.2017, 22:44 [ТС] | ||
|
И я правильно понимаю,что даже области памяти (статическая, стек и куча) стандартом не детерминированы? И нельзя быть уверенным, что при всякой реализации моя глобальная переменная будет обитать в статической памяти?
0
|
||
|
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
|
||||
| 09.03.2017, 23:53 | ||||
|
1
|
||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
||
| 09.03.2017, 23:59 | ||
|
В языках С и С++, как таковых, эти концепции никому низачем не нужны. В языках С и С++ есть понятие продолжительности хранения объекта (storage duration), а также (в С++) понятие времени жизни объекта (lifetime). Вот именно этим и различаются локальные, статические и динамические объекты. И вот это и есть те концепции, которые используются в С и С++. А причем и зачем здесь какие-то "области памяти" - мне в упор не ясно.
2
|
||
|
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
|
|||
| 10.03.2017, 00:46 [ТС] | |||
|
А я верю, к сожалению. (верил) containing the object." "The lifetime of an object or reference is a runtime property of the object or reference." То есть время жизни - менее общее понятие , нежели продолжительность хранения, характеризующая именно поведение объекта во время выполнения программы?
0
|
|||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
|||
| 10.03.2017, 01:14 | |||
|
Продолжительность хранения - это промежуток времени между тем моментом, как для объекта была выделена "сырая" память (заполненная условным мусором), и тем моментом, как эта память была освобождена. Время жизни - это промежуток времени между тем моментом, как в выделенной "сырой" памяти был сконструирован полноценный объект, и тем моментом, как этот объект был детструктирован (память при этом остается, но становится "сырой"). То есть время жизни всегда вложено в продолжительность хранения: начало хранения -> [сырая память ] -> начало жизни -> [объект существует ] -> конец жизни -> [сырая память ] -> конец хранения.Для тривиальных объектов, не требующих конструирования и/или деструктирования, эти два понятия полностью совпадают. Так, например, обстоит дело с объектами типа double или std::array<int, 5>. Так обстоит дело с любыми объектами в языке С.А вот в языке С++ есть нетривиальные объекты, т.е. объекты с нетривиальными конструкторами и/или деструкторами. Для них эти понятия не обязательно совпадают. Например, std::string.Добавлено через 9 минут Время жизни и продолжительность хранения - это педантичные абстрактные концепции, используемые в стандарте языка. Если же вам больше нравится выражать те же идеи через "области памяти" - никто вам не запретит. Просто спецификация языка выбрала другой подход.
0
|
|||
|
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
|
||
| 10.03.2017, 01:18 [ТС] | ||
|
Спасибо.
0
|
||
| 10.03.2017, 01:18 | |
|
Расположение в памяти полей и методов класса Размещение переменных в памяти Функция размещения переменных в динамической памяти! Динамическое выделение памяти для глобальных переменных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|