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

Динамическая память(толи я дурак, то ли правда лыжи не едут) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Пожалуйста подскажите, что означает оператор! http://www.cyberforum.ru/cpp-beginners/thread950097.html
Доброго времени суток. Перевожу Сишный исходник в Делфи и столкнулся с такой строкой v5 = **(_DWORD **)v6->h_addr_list; Подскажите пожалуйста, что она означает, а в частности что означает **(_DWORD...
C++ Чтение графических файлов Здравствуйте уважаемые участники форума. Есть задание для курсового проекта, связанная с программированием C++. Приведу небольшой пример: имеется графический файл, допустим формата jpeg, нужна... http://www.cyberforum.ru/cpp-beginners/thread950094.html
Программирование циклического вычислительного процесса C++
12. Дан набор ненулевых целых чисел; признак его завершения — число 0. Вывести сумму всех положительных четных чисел из данного набора. Если требуемые числа в наборе отсутствуют, то вывести 0. ...
C++ Как же все-таки лучше всего перегружать операторы?
1. Нужно ли использовать friend там, где это возможно? (или не стоит злоупотреблять где-нибудь?) 2. Стоит ли при перегрузке бинарного оператора "+" делать его обособленным от класса? // свободная...
C++ Нахождение корня уравнения http://www.cyberforum.ru/cpp-beginners/thread950029.html
найти корни уравнения и отделить один из них методом деления отрезка пополам x^2=sinx
C++ как правильно создать opengl проэкт в IDE code blocks чтобы компилировался? создаю новый проект опенгл, но нифига не компилируется выдает кучу ошибок подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3142 / 307
Регистрация: 04.12.2011
Сообщений: 8,673
Записей в блоге: 5
09.09.2013, 14:08
Цитата Сообщение от zer0mail Посмотреть сообщение
И все работает, пока некто не передаст ей ссылку не на 1-й элемент массива
Первый это с индексом 0? Тогда всё будет нормально вроде, так как предложено в -1 писать размер.
Поскольку я в низкоуровневых вещах ни в чем не уверен, то примите как размышление.
Самый короткий тип это байт (неважно со знаком ли), но аппаратно память пишется и читается в соответствии с размером машинного слова, то есть доступ к байту в массиве байт требует некоторых усилий, которые на уровне компилятора не видны. Данные действия скрывают некоторые вычисления для обеспечения видимости "прямой индексации".
Если продолжить в приложении к массиву байт размышления о сохранении размера в -1 ячейку, получим ограничение размера, даже если беззнаковый использовать. Может писать unsigned long long? Допустим, но тогда для массивов разных типов, прямая индексация превратится в скрытую процедуру, которая будет предоставлять интерфейс индексирования от нуля и скрывать пересчёт для разных типов. Есть ещё проблема связанная с выравниванием для пользовательских сложных типов. В любом случае перерасход памяти, особенно для коротких записей, гарантирован, так как выравнивать пришлось бы на машинное слово?
С другой стороны, можно сохранить прямую индексацию, как упрощенную запись "указательной" арифметики ( и её сохранив в первозданном виде), и в том числе тождественность указателя на одиночное значение указателю на массив, что немаловажно для С-совместимости, оставив решение о сохранении размера программисту. Это конечно пустая фраза, поскольку "неписанного" стандарта по этому вопросу нет даже для встроенных типов.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru