Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
pianist
0 / 0 / 0
Регистрация: 12.06.2012
Сообщений: 56
#1

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

06.07.2012, 19:57. Просмотров 333. Ответов 6
Метки нет (Все метки)

такая ситуация:
выделяю память под массив интов, но пишу там не везеде, в некоторых местах дефолтная "грязь". Потом скидываю это дело на диск в бинарный файл. вижулстудия умеет показывать hex и выводит везде, где грязь CD но курсивно, а не как обычный hex. возникает вопрос: как понять где грязь мне? (точнее как это делает вижулстудия)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2012, 19:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Блоки памяти (C++):

Пакетированные стандартные блоки - Вложенные стандартные блоки - C++
Кто нибудь может объяснить на примере кода С, как это выглядит?

Выделить в памяти 1024 ячейки по 8 байт и вывести их адреса(МИНИ менеджер памяти)) - C++
Вот тут появилась такая интересная задача: требуется сделать программу которая управляет 1024 ячейками памяти по 8 байт каждая. т.е. за...

Можно ли разместить переменную в нужную ячейку памяти и реально ли хранить данные, разбросанными по памяти? - C++
Добрый день. Не могу найти информацию по двум вопросам : 1) могу ли я разместить переменную в нужную ячейку памяти. Например: int a...

Резервирование памяти/освобождение памяти для трехмерного массива - C++
Необходимо создать трехмерный массив (A), в котором элементы вдоль направления Z выли бы выровнены по 16 байт. Есть две проблемы: ...

Выделение памяти, проверка на утечку памяти - C++
Интересуют два вопроса: 1. Правильно ли устроен алгоритм выделения, удаление и запись ячейки памяти? Может быть, есть более простые...

Распределение памяти. Динамическое выделение памяти - C++
an-1 an-2 ... a2

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

Обрати внимание: в Release Студия ничего этого делать не будет!! В релизе где была случайная грязь - она там же той же случайной грязью и останется.
1
Case-Man
146 / 86 / 15
Регистрация: 02.01.2012
Сообщений: 536
09.07.2012, 12:26 #7
Просто студия в отладочном режиме весь мусор всегда инициализирует этим самым 0xCD.

Добавлено через 36 секунд
Опередили..
1
09.07.2012, 12:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2012, 12:26
Привет! Вот еще темы с ответами:

Ссылки и блоки - C++
Еще один странный вопрос. Почему int i = 3; int& a = i; компилируется,

Дана матрица 2n*2n. Переместить блоки n*n - C++
Дана матрица 2n*2n. Переместить блоки n*n

Два шаблона. Блоки исключений - C++
Очень простая идея: 1. Есть два темплейта Stack and Array 2. и типа все как всегда что то они там между собой делают не очень сложное...

Разбиение файла на блоки по 64 бита - C++
Задача следующая. Необходимо открыть файл в бинарном виде. и блоками по 64 бита отдавать некой функции. Подскажите как это можно...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru