![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
mostly |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 29.3.2006 Репутация: нет Всего: нет |
Или я не правильно выделяю память под массив d ? |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Всё не правильно! ![]() Ты написал: получил: И в чем проблема? Хотел массив с одним элементом, его и получил. Аналогично: Пока всё хорошо. Создаешь динамический массив из 100 элементов Уже плохо. Не понятно чего хочешь. Память выделенную ранее теряешь вмиг
Не понятно чего хочешь. Не правильно дважды. По правилам надо delete[], но в твоём случае уже без разницы ![]() Опиши конкретно чего хочешь добиться |
|||
|
||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
pc - строится на хипе, а d[1] и dd[50] на стэке
Для стэкового массива:
Для хипа - сойздай переменнуб и храни текущие кол-во элементов. |
|||
|
||||
mostly |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 29.3.2006 Репутация: нет Всего: нет |
Хочу создать массив и при необходимости увеличить его. И как узнать его текущий размер? А это был просто пример на котором я пытался это сделать. |
|||
|
||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
mostly,
для чего нужно? для курсовой какой? если для себя, то бери готовое std::vector и не парься ![]() |
|||
|
||||
Daevaorn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Тебе нужно просто кешировать текущий размер массива в отдельной переменной. Если ты хочешь изменить размер массива, то самый простой способ примерно такой:
Будет работать для простых типов(int, float и т.д.) |
||||||
|
|||||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Ну как и говорили выше делай sizeof(arr)/sizeof(arr[0]) или, я так понимаю, sizeof(arr)/sizeof(типа массива)?
|
|||
|
||||
mostly |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 29.3.2006 Репутация: нет Всего: нет |
Нет, я просто С++ изучаю. Вектор я знаю, но хотелось бы знать как сделать динамический массив в С++ (как в С делают с использованием malloc). |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
На C++ делают через вектор или через свою реализацию вектора (только зачем?). Если тебе хочется также, как и на С, но через new/delete, то замени malloc на new и free на delete[]. Только это глупо, имхо. Да и в C++ нет аналога (мне не известен, по крайней мере) realloc... Используй вектор или list (если не нужен произвольный доступ к элементам). |
|||
|
||||
mostly |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 29.3.2006 Репутация: нет Всего: нет |
Всем спасибо - разобрался.
|
|||
|
||||
UnrealMan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Иногда можно юзать GlobalAlloc / GlobalReAlloc / GlobalFree / GlobalSize
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Речь идет о Windows?!? На сколько я знаю, в стандарт C/C++ не входят данных функции. |
|||
|
||||
UnrealMan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Естес-но :-) Можно ещё использовать AllocMemory / ReallocMemory / FreeMemory / MemorySize. Правда для этого библиотека bhsupp.dll понадобится. При компиляции в VC6.0 замечал, что при использовании и того и другого имеет место меньший по сравнению с malloc / new расход памяти при выделении небольших объёмов (несколько байт). К тому же GlobalSize и MemorySize позволяют узнать размер выделенной памяти (правда он не всегда совпадает с размером, указанным при выделении). Разумеется, есть и более продвинутые способы, но они и не такие простые в применении. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |