![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ☼GriKo☼ |
|
||||
|
Unregistered |
... Даров... В общем такая трабла... Если я понял, то "absolute" в паскале, это выделение места в стеке под переменную(или массив). Вопрос в том, как заставить зависЕть массив также в С++?
пример: ПАСКАЛЬ:
С++:
|
||||
|
|||||
| acp |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 4.2.2003 Где: Владимир Репутация: нет Всего: 2 |
Это не так. Ключевое слово absolute, применительно к переменной, означает, что переменная будет "располагаться" в памяти по тому адресу, который указан после этого ключевого слова. Т.е. обращаясь к переменной, вы будете обращаться к той памяти, адрес которой вы указали. PS: да, забыл насчёт С. Наверное нужно брать адрес. И к нему обращаться Это сообщение отредактировал(а) acp - 29.7.2003, 00:56 |
|||
|
||||
| TaTaP |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 15.10.2002 Репутация: 1 Всего: 1 |
Для того, чтобы объект находился по данному адресу (который наперед известен) нужно делать так
void *ptr = NULL; /* инициализируем ptr */ A *a = new(ptr) A; И как обычно, не забываем за собой убирать... |
|||
|
||||
| RAN |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
А каким компилятором это поддерживается? Насколько я знаю в VC 6 это вообще нет, а в Builder 6 это форма зарезервирована, её можно перегрузить, но Run-Time Library это не поддерживает и будет выдаваться, что-то типа: "Не найдено new(unsigned size, void* prt)".
Зачем же убирать. Если ты имеешь ввиду delete а;, то это вызовет ошибку, объект то не в куче расположен. |
||||
|
|||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
мне кажется, что в такой постановке задачи больше подойдет union -------------------- qqq |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Для такой задачи лучше всего объединения использовать:
|
|||
|
||||
| ☼GriKo☼ |
|
|||
|
Unregistered |
Спасибо, люди.. Помогло.
|
|||
|
||||
| ☼GriKo☼ |
|
|||
|
Unregistered |
Продолжение темы.. Первый массив - на 10 переменных, второй - на 2.
Как второй на 2 может быть "absolute u" если тот ю на 10? По каким адресам всё дело происходит? |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: нет Всего: 16 |
Оффтоп... У меня что то эта тема никакими средствами не хочет прочитанной становится
ЗЫ. Пока сообщение от ☼GriKo☼ было последним... После написания данного сообщения все стало на свои места... Это сообщение отредактировал(а) DarkDS - 29.7.2003, 15:01 |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
☼GriKo☼, (ну и nick)
Если считать, что long - 4 байта, а byte - 1 байт, то Размер объединения, выбирается по наибольшему члену, то есть 11 байт u.u[0] займёт байты с 0 по 3, а u.u[1] - с 4 по 7 Вообще, я тоже сразу обратил внимание на странные размерности, может ты где-то ошибся? Кстати, размерность C не проверяет и тебе никто не мешает писать u.u[2] и u.ul[11]. Это сообщение отредактировал(а) RAN - 29.7.2003, 17:36 |
|||
|
||||
| GriKo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.6.2003 Где: Израиль Репутация: нет Всего: нет |
Никк обыкновенный =), только UNIONCODE форум не поддерживает. Так я надеюсь будет легче и глючить не у кого не должно...
С размерностями быть проблем не должно... насколько я помню. Я думаю, и было-бы для меня лучше, сделать это без union'а. Как нибудь через взятия адреса. Т.е.
Вылазит на это что-то типа: ul[0] - 4 . . ul[10] - 0 u[0] - 524292, u[1] - 723204 децимально естественно... Вот похожее мне и нужно... |
|||
|
||||
| GriKo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.6.2003 Где: Израиль Репутация: нет Всего: нет |
Люди, пол пути пройдено не много осталось. ПОМОГИТЕ
|
|||
|
||||
| RAN |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Через union (настоятельно рекомендую)
Ну, вот тебе и без union
Это сообщение отредактировал(а) RAN - 29.7.2003, 23:54 |
||||
|
|||||
| GriKo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 7.6.2003 Где: Израиль Репутация: нет Всего: нет |
Всё. Огромное спасибо. Тему можно закрывать. RAN - BIG tnx!!!
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |