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

Приведение к структуре - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Почему операция взятия корня такая ресурсоемкая? http://www.cyberforum.ru/cpp/thread1284785.html
Здравствуйте! Просветите в вопросе. 1. Какие методы используются для его взятия? 2. Как есть пути оптимизации? Заранее спс!
C++ Процесс обучения нейросети Добрый день. Подскажите, пожалуйста, я хочу написать нейросеть на С++. Это возможно без подключения MATLAB на чистом С++? Дело в том, что перечитав кучу литературы об их проектировании и обучении, я не могу понять куда записываются измененные веса и как они влияют на следующий входной сигнал? К примеру подается цифра пять, в следующий раз подается таже цифра пять только немного иной формы и с... http://www.cyberforum.ru/cpp/thread1283572.html
Вложенность объектов и классов C++
// Создайте класс Rect, инкапсулирующий функциональность прямоугольника // с вещественными координатами. Он должен содержать два вложенных объекта // класса Vector, которые определяют координаты левого верхнего (ptLT) и // правого нижнего (ptRB) углов прямоугольника. Предусмотрите в конструкторе // (конструкторах) инициализацию встроенных объектов. // Введите в класс два объекта...
Vector как динамический массив C++
Здравствуйте. Не могу понять, как сделать с помощью контейнера vector, динамический массив. Заранее спасибо
C++ Объектные файлы *.obj, *.o - они случайно не кроссплатформенные? Если нет, то реальна ли конвертация? http://www.cyberforum.ru/cpp/thread1283137.html
Объясню подробнее, о чем я. Пишем простой код на си, без всяких платформо- и компиляторозависимых функций #include <stdio.h> //#include <conio.h> int main() { printf("hello world"); //_getch(); return 0;
C++ Захват изображения с одного монитора и копирование его на второй, подключенные к одному и тому же компьютеру Друзья, подскажите пожалуйста. Имеется два монитора, подключенных к одному компьютеру. Нужно реализовать захват экрана одного монитора, для вывода в свое окошко на другой монитор. Самое главное, что это должно работать для видео и игр. В инете я нашел несколько статей, но все они реализуют создание видеопотока для записи в файл или отправки по сети. Мне же не нужно ничего записывать или... подробнее

Показать сообщение отдельно
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
31.10.2014, 16:42     Приведение к структуре
Ну так понятно же, что естественные размеры машинных слов разные - разные границы этих слов в памяти. Тут нужно знать, как работает процессор с памятью, как он загружает данные из памяти в регистры. Нет тут никакого узкого вопроса. Сама тема достаточно обширная. Так же еще затрагиваются и другие темы. Это зависит не от разрядности ОС, а от работы самого процессора.

Цитата Сообщение от Izual Посмотреть сообщение
1. "0-член" - не выравнивается, т.к. находится на 0 позиции.
Это относительно начала структуры.

Выравнивание в x86 нужно для простых типов. Байт, слово, двойное слово и учетверенное слово ( в x86-64 ). ( В C++ это обычно char, short, int, long long ( и long в случае linux x86-64 ), ну и указатели ). Начало структуры выравнивается по самому большому слову, которое в ней присутствует. То есть максимум это 4 байта для x86-32 и 8 байт для x86-64.

И так, если в структуре поля идут в таком порядке - char, short, int, long long, то структура будет выровнена по границе 8 байтового слова ( это справедливао для x86-64, в x86-32 выравнивание будет по 4 байтовому слову, хоть long long и занимает 8 байт ).
Структура будет занимать: 1 + 1 + 2 + 4 + 8 = 16.
При этом, если в структуре только char и long long то она так же будет занимать 16 байт.
Если порядок такой: char, long long, char, long long, то размер уже будет 32 байта. Поэтому советуют размещать поля в отсортированном по размеру порядке. Нисходящем или восходящем - без разницы.

Цитата Сообщение от Izual Посмотреть сообщение
(ну и получение N от zp[N] программно, и влияет ли это только на компьютере сборщике программы или/и на те что только пользуются)
Естественно, что это влияет на модуль, который был собран с этим ключом. И что значит программно? Это опция компиляции. При компиляции генерируется код согласно опциям. Вы можете сами высчитать выравнивание, если уверены в последовательности членов.
 
Текущее время: 05:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru