Форум программистов, компьютерный форум CyberForum.ru

Что означают числа перед динамическим массивом? - C++

Восстановить пароль Регистрация
 
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
05.01.2013, 11:17     Что означают числа перед динамическим массивом? #1
C++
1
2
3
4
int *ptr_int = new int[10];
 
for (int i=-4; i<=-1; i++)
    cout << *(ptr_int + i) << "  ";

И вот это будет напечатано:
40 1 333 -33686019

40 - это вроде размер массива
А что означают остальные числа?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.01.2013, 11:17     Что означают числа перед динамическим массивом?
Посмотрите здесь:

Проблема с динамическим массивом C++
Работа с динамическим массивом C++
C++ Работа с динамическим массивом
Работа с динамическим массивом C++
Работа с динамическим массивом C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
05.01.2013, 11:23     Что означают числа перед динамическим массивом? #2
Цитата Сообщение от v.a.l.i.d Посмотреть сообщение
40 - это вроде размер массива
Совсем не факт, например вот вывод под linux'ом http://liveworkspace.org/code/1jIVnI$0
В общем случае это может быть все, что угодно. Возможно просто мусор.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
05.01.2013, 11:36  [ТС]     Что означают числа перед динамическим массивом? #3
Цитата Сообщение от Kastaneda Посмотреть сообщение
Возможно просто мусор.
В Windows есть какая-то закономерность. Вот например если создавать массивы
других типов float, double, то везде есть 1 и -33686019.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11803 / 6782 / 766
Регистрация: 27.09.2012
Сообщений: 16,835
Записей в блоге: 2
Завершенные тесты: 1
05.01.2013, 12:18     Что означают числа перед динамическим массивом? #4
Цитата Сообщение от v.a.l.i.d Посмотреть сообщение
В Windows есть какая-то закономерность.
Конечно есть - система же должна знать сколько и где чего лежит.
Конкретно для вашего случая:
Поменяйте тип проекта с Debug на Release и проверьте свою теорию
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
05.01.2013, 12:40     Что означают числа перед динамическим массивом? #5
Цитата Сообщение от v.a.l.i.d Посмотреть сообщение
int i=-4; i<=-1
А разве так можно делать? Вы обращаетесь к -4 элементу массива и дальше по циклу до -1.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
05.01.2013, 12:44     Что означают числа перед динамическим массивом? #6
Цитата Сообщение от coloc Посмотреть сообщение
А разве так можно делать? Вы обращаетесь к -4 элементу массива и дальше по циклу до -1.
Ну так это просто адресная арифметика. Он обращается к блоку памяти передом массивам (где, видимо, в дебаг-версии стоит префиксом размер и ещё какая-то инфа)
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
05.01.2013, 12:48  [ТС]     Что означают числа перед динамическим массивом? #7
Цитата Сообщение от Croessmah Посмотреть сообщение
Поменяйте тип проекта с Debug на Release и проверьте свою теорию
В Release сплошной мусор)

Добавлено через 1 минуту
Цитата Сообщение от coloc Посмотреть сообщение
А разве так можно делать?
В C++ все можно
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
05.01.2013, 12:57     Что означают числа перед динамическим массивом? #8
Цитата Сообщение от v.a.l.i.d Посмотреть сообщение
В C++ все можно
Да... все можно... Я недавно тоже с указателями игрался... Переустанавливал систему потом (не факт что именно от указателей)
ЗЫ Интересно, а может вот такой выход за границы массива сделать что то ОС?
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
05.01.2013, 12:58  [ТС]     Что означают числа перед динамическим массивом? #9
Что же все-таки эта единица означает?
40 1 333 -33686019
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
05.01.2013, 12:58     Что означают числа перед динамическим массивом? #10
coloc, нет.
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
05.01.2013, 13:05     Что означают числа перед динамическим массивом? #11
Toshkarik, Я нагуглил вот что http://ru.wikipedia.org/wiki/%CF%E5%...F3%F4%E5%F0%E0 Здесь пишут, что возможно изменить данные.
Ааа, дочитал до конца, там у виндовса специальные средства защиты
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
05.01.2013, 13:20     Что означают числа перед динамическим массивом? #12
coloc, это совсем разные вещи. Простым выходом за пределы выделенной процессу памяти, Вы не сможете изменить данные другого процесса, и уж тем более ОС.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2013, 18:18     Что означают числа перед динамическим массивом?
Еще ссылки по теме:

Работа с динамическим массивом С++ C++
Работа с динамическим массивом C++
Задание с динамическим массивом C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
07.01.2013, 18:18     Что означают числа перед динамическим массивом? #13
Это зависит от конкретной реализации стандартной библиотеки. Поэтому вопрос "что обозначают эти числа" правильней задавать упоминая, где и с какой библиотекой ты компилируешь. Ничто не мешает тебе отдебажить и посмотреть, для чего там что нужно. Если ты будешь выделять память под объекты, то в эту область еще добавится инфа об их количестве, так как, нужно при удалении вызывать деструкторы для каждго объекта. Там же где-нибудь, может быть, лежит инфа о том, с объектами ли мы вообще имеем дело. И не факт, что это именно число, вполне может быть маска для чего-либо.
Цитата Сообщение от v.a.l.i.d Посмотреть сообщение
-33686019
, к примеру, может быть использовано в дебажных версиях для проверки повреждения кучи. Ну и в дебажных версиях библиотек все эти данные могут в корне отличаться от релизных, на то они и дебажные.
Самый верный способ - дебаггер в руки и мучить new с delete.
Yandex
Объявления
07.01.2013, 18:18     Что означают числа перед динамическим массивом?
Ответ Создать тему
Опции темы

Текущее время: 15:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru