Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Как в run-time изменить размер структуры? |
Автор: Chuck 20.1.2006, 15:10 | ||
Господа! Прошу разъяснить мне, как это сделать, сабж! Поясню, что я хочу! Есть структура
Т.е. изначально задано 100 элементов структуры. Как эту сотню расширить до 1000, 10000? Знаю, что копать нужно в сторону realloc, но что то не получается у меня. Код компилируется, но не выполняется. |
Автор: Mayk 20.1.2006, 15:32 |
Использовать std::vector и еже с ними. realloc - это си, а не с++. |
Автор: chaos 20.1.2006, 15:49 | ||
ну а если всеже решил использовать свой метод, то тогда надо делать так
Добавлено @ 15:52 ну а так Mayk дело говорит, зачем усложнять себе жизнь всякими маллокаи реаллоками и тп лабудой Добавлено @ 15:55 ну и не забывай в конце делать free |
Автор: azesmcar 20.1.2006, 17:01 | ||||
Полностью согласен...Нет смысла в realloc..но если уж хочется так то лучше уж new, delete...твой realloc все равно тоже самое делает (сперва удаляет потом заново создает).. |
Автор: blackofe 20.1.2006, 21:24 |
Chuck все предыдущие ораторы дело говорят. твоя главная ошибка в том, что ты пытаешься реаллокировать память, которую ты не аллокировал (пардон мой френч): The realloc function changes the size of an allocated memory block. другими словами, realloc можно использовать для реаллокации памяти, предварительно аллокированной с помощью malloc, calloc, т.е. выделенной в куче. своим же объявлением массива ты говоришь компилятору, чтобы он озаботился размещением его в стеке - скажем так, это есть са-авсем другое место ![]() ну и, если уж мы имеем в руках с++, да еще с stl, то грех этим не воспользоваться. |
Автор: Chuck 22.1.2006, 11:25 | ||
Спасибо, на самом деле я просто запутался, но знал, что нужно выделять malloc-ом, просто из-за многочисленных ошибок, я упустил это! Вот пример с изменением размера вектора
|