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

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

Войти
Регистрация
Восстановить пароль
 
somwan
2 / 2 / 1
Регистрация: 15.04.2014
Сообщений: 8
#1

Порядок хранения структур в ОЗУ и memset - C++

27.11.2014, 09:37. Просмотров 246. Ответов 5
Метки нет (Все метки)

Всем добра!

Вопрос в следующем. если объявить массив например m[100] - то он будет храниться в ОЗУ как сплошная последовательность символов и для обнуления этого массива можно использовать функцию memset(m, 0, sizeof(m)); А как именно в ОЗУ хранятся структуры? Тоже как сплошная последовательность, или как-то иначе? Цель вопроса состоит в понимании можно ли для обнуления структур использовать функцию memset();
например:
C++
1
2
3
4
5
6
7
8
9
struct STR { 
 
                          unsigned char m[100];
                          long int p1;
                          int p2;
 
} str;
 
    memset(&str, 0, sizeof(STR));
сомнение есть в том, что так можно делать. Потому что непонятно как именно хранятся данные структуры в ОЗУ.

Добавлено через 17 минут
Пожалуй стоит уточнить. Я так делаю, и при проверке вроде бы и работает, но в программе есть непонятный глюк, в участке работающего кода не так уж много, и среди него memset() - используемая как раз для обнуления структуры. Вот и возникло предположение о том что из-за неё глючит. Может кто сталкивался.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2014, 09:37     Порядок хранения структур в ОЗУ и memset
Посмотрите здесь:

memset C++
memset, memcpy C++
Хранения Графа в памяти C++
C++ Стек для хранения данных
C++ memset()
Что делает memset в приведенном коде C++
Запустить программу. Библиотека для memset C++
C++ Memset для двухмерного массива
Определить порядок хранения байт 16-ричного числа C++
C++ по поводу memset
Разработать программу «Библиотека», в которой для хранения информации о книгах используется массив структур C++
Структура для хранения даты C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Max Dark
В поиске работы
 Аватар для Max Dark
1548 / 1401 / 501
Регистрация: 09.10.2013
Сообщений: 3,184
Записей в блоге: 8
Завершенные тесты: 2
27.11.2014, 09:56     Порядок хранения структур в ОЗУ и memset #2
Цитата Сообщение от somwan Посмотреть сообщение
в программе есть непонятный глюк
Выложите код, посмотрим
CheshireCat
Эксперт С++
2910 / 1238 / 78
Регистрация: 27.05.2008
Сообщений: 3,321
27.11.2014, 09:59     Порядок хранения структур в ОЗУ и memset #3
В данном случае так можно делать. Структура занимает непрерывный участок памяти. Глюк, очевидно, имеет другую причину.
Приведенный код не дает информации о вероятных причинах глюка.
somwan
2 / 2 / 1
Регистрация: 15.04.2014
Сообщений: 8
27.11.2014, 10:08  [ТС]     Порядок хранения структур в ОЗУ и memset #4
Я не прошу искать эту причину. Я спрашиваю о том как структуры хранятся в ОЗУ, сплошной последовательностью байтов, или же по переменным из состава структуры. Если первое, то memset() пригоден, если второе, то нет. вопрос только в этом. Я уже начинаю склоняться что первый вариант. И уже от многих слышал то же (спасибо CheshireCat). Глюк я и сам выведу, это вопрос времени.
demmax2004
58 / 136 / 35
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
27.11.2014, 10:11     Порядок хранения структур в ОЗУ и memset #5
Цитата Сообщение от somwan Посмотреть сообщение
Тоже как сплошная последовательность
Да, но с выравниванием по границе 4 байта(для x32 систем)

Цитата Сообщение от somwan Посмотреть сообщение
ОЗУ как сплошная последовательность символов
да, но с учетом выравнивания членов структуры.

memset(&str, 0, sizeof(STR));
Все ОК.
somwan
2 / 2 / 1
Регистрация: 15.04.2014
Сообщений: 8
27.11.2014, 10:14  [ТС]     Порядок хранения структур в ОЗУ и memset #6
Ну хорошо, спасибо за обсуждение. Сомнение разрешено.
Yandex
Объявления
27.11.2014, 10:14     Порядок хранения структур в ОЗУ и memset
Ответ Создать тему
Опции темы

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