Emerald |
Отправлено: 09.01.2005, 18:47 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
Собственно сабж. Видимо С++Builder 5 как особенно работает с памятью. Куча ограничений, которые мешают сделать то, что надо.
Как бы вы это реализовали? |
|
Георгий |
Отправлено: 09.01.2005, 22:52 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
никаких особенностей в работе с памятью у BCB не замечал.
динамические массивы можно реализовать через класс vector — достаточно стандартное, оптимальное и безопасное решение.
Отредактировано Георгий — 09/01/2005, 23:55 |
|
Emerald |
Отправлено: 10.01.2005, 13:07 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
Можно ткнуть в ссылку? А то я что то не найду... Vector позволяет менять размеры массива с сохранением существующей информации? |
|
Георгий |
Отправлено: 10.01.2005, 14:25 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
stl::vector- объект из стандартной c++ библиотеки шаблонов (STL).
его описание есть везде где описывается STL в том числе стандартной помощи BCB — пишем слово vector жмём на нём F1 и показывается его описание.
по поводу resize:
"alters the size of self. of the new size (sz) is greater that the current size, then sz-size() instances of the default value of type T are inserted at the end of the vector. if the new size is smallerthar current capacity, then vector is truncated by erasing size()-sz elements of the end. if sz is equal to capacity then no action is taken." |
|
Emerald |
Отправлено: 12.01.2005, 11:59 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
Мда, хелп я посмотрел. С одной стороны вроде вещь хорошая, но уж как то совсем специфично все. Как то поиск странно проводится, и вставка в середину тоже.
А русская дока по vector есть? |
|
Gedeon |
Отправлено: 12.01.2005, 12:24 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Поищите на форуме я приводил ссылку на книгу стл там найдете все что нужно и не только про вектор.
|
|
vvoid |
Отправлено: 12.01.2005, 16:12 |
|
Машинист паровоза
Группа: Участник
Сообщений: 171
|
С векторами конечно удобней, но если вам они непривычны — используйте схему динамического выделения памяти:
malloc --> realloc --> free
Все проблемы с безопасностью берёт на себя компиллер — вам остаётся только пользоваться и наслаждаться жизнью.
Удачи!
|
|
Emerald |
Отправлено: 13.01.2005, 12:35 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 7
|
Уж больно много неудобств с realloc'ом |
|
Gedeon |
Отправлено: 13.01.2005, 12:52 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (vvoid @ 12/01/2005, 17:14) | Все проблемы с безопасностью берёт на себя компиллер |
О как а я и не знал
|
|
vvoid |
Отправлено: 13.01.2005, 17:11 |
|
Машинист паровоза
Группа: Участник
Сообщений: 171
|
QUOTE (Gedeon @ 13/01/2005, 13:54) | QUOTE (vvoid @ 12/01/2005, 17:14) | Все проблемы с безопасностью берёт на себя компиллер |
О как а я и не знал |
Не, может я и погарячился, но если не сложно, объясните, что к чему? Интересно, всё таки!
|
|
Gedeon |
Отправлено: 13.01.2005, 17:37 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
ну как тут обьяснить, по сути те же new, delete и все остальные приколы работающие с памятью и используют эти malloc, realloc, free но с ними как бы проще, а если вы маллоком память выделите, и не освободите компилер то этого не заметит, плюс с ними запариться намного проще, делал я когда-то прогу с ними, так стабильный виолэйшн был, еле нашел где запара была и то из принципа искал, т.к. по срокам пока нашел уже все прошло. Так что в любом случае все зависит от программиста, компилятор лишь помогает кое в чем, но с разными инструментами и разные шансы нагородить чего-то ненужного и трудно потом отлавливаемого.
|
|
vvoid |
Отправлено: 13.01.2005, 17:52 |
|
Машинист паровоза
Группа: Участник
Сообщений: 171
|
Я поначалу пренебрежительно отнёсся к использованию malloc-семейства. Потом акуратно разобрался и всё вроде пошло путём. Ещё всегда при разработке держу включенным CodeGuard Validation. Главное при сборке релиза не забыть его вырубить! )) а то везде рядом с екзешником будет валятся его файло — Глаза мылить!
Вообщем, я считаю, realloc при необходимости можно юзать!
|
|
Shura |
Отправлено: 14.01.2005, 16:08 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 45
|
по-любому лучше использовать std:vector. А если будет много вставок в центр, и не надо обращаться по индексу, а только считывать по очереди от начала и до конца, то лучше пользовать std:list. — это связный список. |
|