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

И снова malloc... - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Математика в программировании http://www.cyberforum.ru/cpp-beginners/thread315075.html
Дорогие программисты, объясните мне пожалуйста, как математика отражается в программировании и такие разделы как арифметика, элементарная алгебра, элементарная геометрия (планиметрия и стереометрия), теория элементарных функций и элементы анализа, а так же дискретная математика!
C++ Полосы прокрутки заданиях организовать вычисление с помощью полосы прокрутки для различных n. Причем, преду- смотреть вычисление, как в цикле, так и по формуле, приведен- ной в правой части выражения 13 + 23 + 33+…+ n3 = n2(n + 1)2/4 http://www.cyberforum.ru/cpp-beginners/thread315074.html
C++ Радиокнопки
Вместе с рамкой))) Написать программу, которая указывает знак значения функции sin в зависимости от выбранной на форме четверти ко- ординатной плоскости
имитация "матрицы" C++
Здравствуйте! Попробовал на языке С++ имитировать матрицу :D . В приложеном архиве скомпилированый файл, в папке дата исходники с инклудами. Вопросы: Как зделать чтобы у откомпилированного файла был значок (как у всех экси файлов). Как зделать чтобы цифри в приложении отображались зелёными (как в матрице :D).
C++ Кнопки, метки и окна редактирования http://www.cyberforum.ru/cpp-beginners/thread315066.html
Пожалуйста помогите))) или хотя бы объясните))) Написать программу, которая вычисляет (вместе с рамкой) Дана: длина ребра куба a. Найти объем куба V и площадь его боковой поверхности S. Пример: a = 5 Ответ: V = 125, S = 100
C++ В файле содержатся структуры с полями Помогите дописать прогу в . Задание следующее: Организовать меню: Создание файла, Просмотр файла, Поиск, Выход. В файле содержатся структуры с полями: № школы, район, адрес, количество учащихся. Вывести количество учащихся школ Ленинского района При просмотре файла не отображается № школы, и по поводу вывода количества учащихся школ Ленинского района исправьте, что там не так, пожалуйста. Да,... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17640 / 5864 / 379
Регистрация: 30.03.2009
Сообщений: 16,167
Записей в блоге: 26
07.06.2011, 22:57
Цитата Сообщение от tes Посмотреть сообщение
Сколько malloc "по умолчанию" выделяет не совсем понятно...
Чтобы не думать о том, что там по умолчанию, надо работать правильно и не задумываться о таких вопросах. Т.е. выделять памяти столько, сколько надо, а не в количестве 0 байт.

Цитата Сообщение от tes Посмотреть сообщение
должна выделить 16 + 85 или 8 + 85
Наверное я не так выразился. Память, возвращаемая malloc'ом, всегда должна быть выровнена на 8 байт (или 16, но пусть будет 8). Это означает, что после того, как ты выделил 1 байт, то последующий вызов malloc'а пропустит 7 байт, чтобы следующий адрес был так же кратен 8 байтам. В итоге те 7 байт останутся неиспользоваными. Но при работе с указателем от первого вызова в эти ненужные 7 байт ты можешь нормально обращаться и программа не упадёт (хотя номинально код будет ошибочным). Ну и в таком предположении malloc всегда как бы выделяет количество байт памяти, округлённое до кратности 8 (с округлением в большую сторону). Т.е. если в malloc подать значения от 1 до 8, то всё равно как бы будет выделено 8 байт (выделено будет столько, сколько нужно плюс неиспользуемый хвост). Если подать значение от 9 до 16, то будет выделено 16 байт и т.п.

Всё, что написано выше - я объяснял причину того, почему твой некорректный код работал нормально и не падал. На i386 оно работает так, на другой архитектуре может работать по-другому. Поэтому неправильная работа с динамической памятью опасна тем, что код может работать на одной машине и ломаться на другой

Можешь ещё немного тут почитать: http://www.cyberforum.ru/cpp-experts...ml#post1671703

Что касается твоего кода, то он уже почти правильный. Только в 35 строке надо сравнивать не с max_size, а со значением pam, которое ты подал в конструктор (понятно, что его надо сохранить в экземпляре класса)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru