| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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-ом, просто из-за многочисленных ошибок, я упустил это! Вот пример с изменением размера вектора
|