Форум программистов, компьютерный форум CyberForum.ru

Vector string'ов и освобождение памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ NetBeans, не работают cin/cout http://www.cyberforum.ru/cpp-beginners/thread359029.html
как сделать что бы работали cin cout для компилятора MinGW
C++ Нужна помощь в реализации программы. Вот что нужно реализовать: Есть 4 .bat файлов,при их запуске создается 2 Dos окна(Dos1 и Dos2) Есть программа .exe которая содержит 4 кнопки. Собственно что надо: При запуске .exe фала она должна запустить 4 .bat файла...запустится 8 Dos окон(4 Dos1 и 4 Dos2)...Dos1 надо закрыть сразу после появления,а Dos2 надо привязать к 4 кнопкам которые содержатся в программе .exe при нажатии на button1... http://www.cyberforum.ru/cpp-beginners/thread359024.html
C++ Вычислить стоимость продуктов с учетом скидок
Помогите пожалуйста написать программу на С++: есть магазин, приход. покупатель покупает хлеб, молоко, сыр. если покупает покупатель сыр и молоко - скидка 10%, молоко и хлеб - 12%.Если возвращает товар в магазин, магазин отдает 110%. Цена молоко, хлеб, сыр свои. Напсиать програму которая запрашивает у покупателя продукт и снижает цену и возвращает стоимость согласно скидкам.
Сколько клиентов обслужит мастер за смену продолжительностью T? C++
Задали задачи на Си. Для каждого посетителя парикмахерской (с одним мастером) известны t - момент его прихода и to – продолжительность его обслуживания. Сколько клиентов обслужит мастер за смену продолжительностью T? Я так понял что тут нужно использовать циклы.Но написать прогу не могу. #include <iostream> #include <math.h.> using namespace std; int main(void) { int t; // момент...
C++ deque<float> http://www.cyberforum.ru/cpp-beginners/thread358992.html
Создать контейнер deque и заполнить его типом данных <float>, вывести на экран. Удалив одни элементы и заменив другие вывести на экран через итераторы. Удалить N элементов после заданного. Вот мой код, не могу сообразить дальше... #include <deque> #include <iostream> using namespace std;
C++ Отдельная функция Есть исходник си там создается матрица(рандомно от а до б) и в ней есть цикл поиска максимального числа в матрице.Все работает НО,как ее офрмить в виде отдельной функкци void funс(**math,int max){цикл поиска } потом мейн так? подробнее

Показать сообщение отдельно
Union
17 / 17 / 2
Регистрация: 16.08.2010
Сообщений: 252

Vector string'ов и освобождение памяти - C++

01.10.2011, 17:29. Просмотров 3006. Ответов 11
Метки (Все метки)

Как известно вектор не освобождает память.
В подавляющем большинстве случаев string работает на основе вектора (т.к. если использовать list - хранить на каждый байт по 2 указателя весьма не эффективно) и тоже не освобождает память.
Допустим я создал вектор из 1000 стрингов содержащих строку 1000 байт каждый.
При этом получился вектор из 1000 элементов размером в 1500 элементов (500 зарезервировано)
И также каждый элемент - string будет содержать 1000 байт текста и 500 резерва.

Понятно что в первых 1000 элементах вектора будет указатели на различные области памяти, в которых хранятся стринги. А что будет в этих 500 зарезрверованных элементах вектора? Там тоже уже будут указатели на какие-то области памяти, в которых будут динамически выделены несколько байт под основу стринга? Или нет?
Далее если я очищу вектор методом clear, у меня получится вектор из 0 элементов и 1500 зарезервированных.
Что тогда будет в этих зарезервированных?
При вызове clear самым оптимальным на мой взгляд былобы - полное освобождание памяти по указателям (удаление стрингов) и обнуление указателей.
Но возможен и такой вариант - все стринги просто вычистятся и количество байт в них станет 0, а зарезервированное место 1500 байт останется, и таким образом clear вообще ни приведет к освобождению памяти ни за счет удаления элементов в векторе, ни за счет удаления самих стрингов.
Подскажите что в действительности будет?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru