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

Блоки памяти - C++

Восстановить пароль Регистрация
 
pianist
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 56
06.07.2012, 19:57     Блоки памяти #1
такая ситуация:
выделяю память под массив интов, но пишу там не везеде, в некоторых местах дефолтная "грязь". Потом скидываю это дело на диск в бинарный файл. вижулстудия умеет показывать hex и выводит везде, где грязь CD но курсивно, а не как обычный hex. возникает вопрос: как понять где грязь мне? (точнее как это делает вижулстудия)
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Root2x
 Аватар для Root2x
12 / 12 / 0
Регистрация: 21.05.2012
Сообщений: 52
06.07.2012, 21:52     Блоки памяти #2
Инициализируй массив нулями, и не нужно будет ничего выяснять.
Avazart
 Аватар для Avazart
6906 / 5146 / 253
Регистрация: 10.12.2010
Сообщений: 22,639
Записей в блоге: 17
06.07.2012, 22:27     Блоки памяти #3
Это правило хорошего тона- объявив переменную не забыть её проинициализировать (тобиш сразу)
pianist
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 56
09.07.2012, 11:37  [ТС]     Блоки памяти #4
блин, ребята, я не спрашивал, что мне делать, что бы этого не было, а спросил КАК ЭТО ПОНЯТЬ
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
09.07.2012, 12:08     Блоки памяти #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот идёшь ты по улице, а тебе на голову серанул голубь. Ты поднимаешь к небу кулак и кричишь "КАК ЭТО ПОНЯТЬ?!!!"... А понимать тут нечего. Не хочешь, чтобы тебе гадили на голову - не ходи под голубями. Не хочешь "мусор", инициализируй данные. RAII никто не отменял.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,309
09.07.2012, 12:21     Блоки памяти #6
Цитата Сообщение от pianist Посмотреть сообщение
вижулстудия умеет показывать hex и выводит везде, где грязь CD но курсивно, а не как обычный hex.
Такое поведение VS характерно для режима Debug: все неинициализированные переменные заполняются "магическим числом" 0xCD. Именно для того, чтобы программист мог в отладчике посмотреть, что переменная - не инициализирована. Студия определяет это именно анализом байтов переменной на 0xCD.

Обрати внимание: в Release Студия ничего этого делать не будет!! В релизе где была случайная грязь - она там же той же случайной грязью и останется.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2012, 12:26     Блоки памяти
Еще ссылки по теме:

Можно ли разместить переменную в нужную ячейку памяти и реально ли хранить данные, разбросанными по памяти? C++
Дана матрица 2n*2n. Переместить блоки n*n C++
Получить новую матрицу переставляя ее блоки C++

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

Или воспользуйтесь поиском по форуму:
Case-Man
 Аватар для Case-Man
85 / 31 / 1
Регистрация: 02.01.2012
Сообщений: 306
09.07.2012, 12:26     Блоки памяти #7
Просто студия в отладочном режиме весь мусор всегда инициализирует этим самым 0xCD.

Добавлено через 36 секунд
Опередили..
Yandex
Объявления
09.07.2012, 12:26     Блоки памяти
Ответ Создать тему
Опции темы

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