| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Можно ли обрезать размер массива |
| Автор: gray_k 24.11.2003, 12:53 | ||
| Такой вопрос. Предположим мне надо заполнить массив, точное количество элементов которого я не знаю, но знаю максимально возможное. Массив заполняется из другого массива по определённому условию. я делаю так:
После выполнения этого кода мы имеем массив Id, заполненный до (MySize-1)-го элемента. Можно ли теперь не создавая новый массив, и не проходя в цикле по всем значениям Id, назначить массиву размер MySize вместо MAX_SIZE. |
| Автор: val 24.11.2003, 13:58 |
| Мне кажется, что нет. |
| Автор: Paradox 24.11.2003, 14:55 |
| К соответствующему топику могу добавить что SetLength |
| Автор: gray_k 24.11.2003, 14:59 |
| Нет. SetLength определён только для массивов-строк AnsiString и WideString |
| Автор: Paradox 24.11.2003, 15:06 |
| Ну а чтонибудь похожее ведь должно быть для динамических массивов (я тебе советую по аналогии с Дельфи и билдером) |
| Автор: Ars 24.11.2003, 17:12 |
| Посмотри про CoTaskMemRealloc() |
| Автор: gray_k 24.11.2003, 17:34 | ||
Посмотрел. Только у меня он в программе не компилится. Не подскажешь какой хидер надо подключить. У меня С++ Билдер 6. |
| Автор: Ars 24.11.2003, 17:38 | ||
|
| Автор: bel_nikita 24.11.2003, 17:57 | ||
А так не пробывал. for (int i=MySize;i<MAX_SIZE;i++) delete Id[i]; |
| Автор: Albinos 24.11.2003, 19:03 | ||
Такая фишка не прокатит. И наверняка вызовет ошибку: delete будет считать, что в Id[i] содержится адрес переменной, под которую динамически выделялась память. В итоге начнет удалять не то. |