![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 21.04.2008
Сообщений: 164
|
![]()
Здраствуйте, в данный момент изучаю классы.
После того как я прочел про динамическое выделение памяти, у меня возник ряд вопросов: 1)Откуда компилятор знает сколько нужно выделить памяти под объект (от чего это зависит)? Я попробовал сам ответить на свой вопрос, и проверить с помощью sizeof() сколько памяти занимает объект. вот класс(проверочный): Код:
Затем, я добавил переменную типа char, чтобы убедится что вес зависит от типа и количества переменных. Я ожидал увидить 9(char = 1 byte) а увидел 12 как если б это был тип int. Как это можно объяснить...? ![]() 2)Можно ли расширить границы массива с помощью new? Например: Код:
Код:
p.p.s. Можно ди проверить длину строки еще в потоке/ буфере? |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Очевидно, что данные класса выровнены по границе в 4 байта. Размер его всегда будет кратным четырём, то есть если в данном случае добавить ещё одну переменную типа char, то его размер не изменится. Для считывания строк переменной длинны можно использовать средства стандартной библиотеки: std::getline и std::string.
Код:
Последний раз редактировалось netrino; 30.08.2009 в 15:36. |
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 21.04.2008
Сообщений: 164
|
![]() Цитата:
p.s про getline и тип string я знаю, я имел ввиду непосредственно в потоке проверять длину строки. p.p.s Убедительная просьба ответить на второй вопрос |
|
![]() |
![]() |
![]() |
#4 | |
C++ hater
Старожил
Регистрация: 19.07.2009
Сообщений: 3,333
|
![]() Цитата:
и ты прав, в этом примере будет ошибка ![]() проще используй станлартные плюсовские строки
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
|
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 21.04.2008
Сообщений: 164
|
![]() Цитата:
![]() p.s Буду пользоваться стрингами ![]() |
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
![]()
А если нужны массивы переменной длины не только для char - воспользуйтесь стандартными контейнерами!
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вес баз антивируса Касперского | Терминатор | Безопасность, Шифрование | 11 | 04.08.2009 23:03 |
С помощью методов и свойств объекта осуществляется управление терминалом. Имя (идентификатор) объекта | User>lia | Общие вопросы Delphi | 4 | 16.01.2009 16:37 |
Как поменять одну из текстур объекта не меняя все остальные и без повторной загрузки объекта в GLScene | DomKr@t | Мультимедиа в Delphi | 0 | 14.12.2008 01:52 |
Дан файл, содержащий информацию о багаже нескольких пасажиров (кол-во вещей и их общий вес) | MariyaVo | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 08.12.2008 23:10 |
вижение объекта | BuT@JL | Помощь студентам | 4 | 28.11.2008 19:35 |