The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"утечка памяти"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"утечка памяти"
Сообщение от fura13 Искать по авторуВ закладки(ok) on 19-Май-04, 16:55  (MSK)
  Есть такой тип в C++ string . Приведу пример :
int main(void)
{
string s;
s = "any text";
return 0;
}
Вот там где s = "any text" выделяется память под переменную s . Память берется из кучи (heap). Так вот он память не возвращает, пока не не произойдет завершение процесса и высвобождает память уже сама операционная система. Подскажите способ как эту память все таки удалить до завершения процесса?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "утечка памяти"
Сообщение от Alexander S. Salieff emailИскать по авторуВ закладки on 19-Май-04, 17:29  (MSK)
>  Есть такой тип в C++ string . Приведу пример :
>
>int main(void)
>{
>string s;
>s = "any text";
>return 0;
>}
>Вот там где s = "any text" выделяется память под переменную s
>. Память берется из кучи (heap). Так вот он память не
>возвращает, пока не не произойдет завершение процесса и высвобождает память уже
>сама операционная система. Подскажите способ как эту память все таки удалить
>до завершения процесса?

Че за бред? ;)
Или область видимости отконфигури, чтобы при выходе из нее автоматическая переменная удалялась, или заюзай динамическое создание через указатель, и сам создавай удаляй - скока влезет...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "утечка памяти"
Сообщение от Alexander S. Salieff emailИскать по авторуВ закладки on 19-Май-04, 17:31  (MSK)
Не, ну блин... Утечка... Е-мае ;)))))
А вот ты говоришь main(){int a=10;}, и там аж 4 байта резервируюцца. И удаляюцца ведь, гады, только по завершении процесса ;)))) Тоже утечка? ;) Кругом одни утечки тогда, хз, куда от них дется ;)))))
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "утечка памяти"
Сообщение от AnToXa emailИскать по авторуВ закладки(ok) on 19-Май-04, 17:34  (MSK)
>  Есть такой тип в C++ string . Приведу пример :
>
>int main(void)
>{
>string s;
>s = "any text";
>return 0;
>}
>Вот там где s = "any text" выделяется память под переменную s
>. Память берется из кучи (heap). Так вот он память не
>возвращает, пока не не произойдет завершение процесса и высвобождает память уже
>сама операционная система. Подскажите способ как эту память все таки удалить
>до завершения процесса?

вы бредите.
автоматическая переменная типа std::string уничтожается при раскрутке стека перед выходом из main и вызывается деструктор std::string который освобождает память.
сделайте простейший враппер над std::string и увидите.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "утечка памяти"
Сообщение от Alexander S. Salieff emailИскать по авторуВ закладки on 19-Май-04, 17:50  (MSK)
>вы бредите.
>автоматическая переменная типа std::string уничтожается при раскрутке стека перед выходом из main
>и вызывается деструктор std::string который освобождает память.
>сделайте простейший враппер над std::string и увидите.

Я не думаю, что человеку ведомы раскрутки стека, вероятно он это и имел ввиду под словом "высвобождает сама операционная система" (интересно, каким именно образом он отслеживал точку высвобождения? ;). Автора возмущает сам факт, почему компилятор не догадался, что автору больше не нужна автоматическая переменная, и не удалил ее до выхода из области видимости? ;))) А ведь мог бы, если бы захотел и постарался ;)))
Блин, я ща помру ;)

Почему люди не считают нужным хотя бы ознакомится с ртфмом под названием "Язык С++" авторства малоизвестного человека по имени Бьярн Страуструп?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "утечка памяти"
Сообщение от AnToXa emailИскать по авторуВ закладки(ok) on 19-Май-04, 18:02  (MSK)
>Я не думаю, что человеку ведомы раскрутки стека, вероятно он это и
>имел ввиду под словом "высвобождает сама операционная система" (интересно, каким именно
>образом он отслеживал точку высвобождения? ;). Автора возмущает сам факт, почему
>компилятор не догадался, что автору больше не нужна автоматическая переменная, и
>не удалил ее до выхода из области видимости? ;))) А ведь
>мог бы, если бы захотел и постарался ;)))
>Блин, я ща помру ;)

хех, ну раскрутку стека производит libstdc++ все-таки, а не система :)

>Почему люди не считают нужным хотя бы ознакомится с ртфмом под названием
>"Язык С++" авторства малоизвестного человека по имени Бьярн Страуструп?
такие вот они, люди :)
почему вы думаете большинство "программистов на C++" используют язык как C с классами, имхо отсюда большинство нападок на C++.

ладно, старческое ворчание :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "утечка памяти"
Сообщение от fura13 Искать по авторуВ закладки(ok) on 20-Май-04, 08:29  (MSK)
  Извиняюсь что не правильно поставил вопрос. Да к сожалению я не очень пока хорошо знаю С++. Я хотел узнать нет ли в типе string явнового способа для высвобождения памяти. Про область видимости я знаю, не могу понять почему память не высвобождается. String у меня находится в структуре которую я размещаю в динамической памяти. Стринг у меня в структуре статик, ну т.е. :
struct st{
  int name;
  string s;
};
Программа у меня в идеале должна работать довольно долго(бесконечно). Но работает всего четыре дня(запускаю с помощью nohup). По команде top явно видно что растет size и res.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "утечка памяти"
Сообщение от SergeiZz Искать по авторуВ закладки on 20-Май-04, 09:38  (MSK)
>  Извиняюсь что не правильно поставил вопрос.
Вопрос поставлен правильно, но вопрос детский...

>Да к сожалению я не очень пока хорошо знаю С++.
...И форум -- не лучшее место для его изучения...

>Я хотел узнать нет ли
>в типе string явнового способа для высвобождения памяти.
Есть, ессестввенно.

>String у
>меня находится в структуре которую я размещаю в динамической памяти. >Стринг у меня в структуре статик,
Это неверное заключение. Статик -- это совсем другое.

>ну т.е. :
>struct st{
>  int name;
>  string s;
>};
> Программа у меня в идеале должна работать довольно долго(бесконечно). Но работает
>всего четыре дня(запускаю с помощью nohup). По команде top явно видно
>что растет size и res.
Как только возникнет необходимость освободить память, выделенную под s
(а когда это будет знаете только Вы сами), вызовите явно деструктор string:

string str= "Hello!";
// ...
str.~string();

Читать по C++ рекомендую недавно изданную книгу Лафоре:
http://www.books.ru/shop?search_type=+&query=КЮТНПЕ&x=0&y=0

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "утечка памяти"
Сообщение от AnToXa emailИскать по авторуВ закладки(ok) on 20-Май-04, 15:54  (MSK)
>>String у
>>меня находится в структуре которую я размещаю в динамической памяти. >Стринг у меня в структуре статик,
>Это неверное заключение. Статик -- это совсем другое.
угу, это не static, это просто "by value".


>>всего четыре дня(запускаю с помощью nohup). По команде top явно видно
>>что растет size и res.
скорее всего память растет не из-за string :)
может быть из-за того, что вы просто не делаете delete на эту самую свою структуру

>Как только возникнет необходимость освободить память, выделенную под s
>(а когда это будет знаете только Вы сами), вызовите явно деструктор string:
>
>
>string str= "Hello!";
>// ...
>str.~string();
для очистки string лучше использовать str.clear(), ибо явно вызывая деструктор можно поиметь некоторые проблемы, ибо насколько я помню стандарт не оговаривает, что деструктор должен оставлять объект в consistent state, и даже если в конкретной реализации это так, то все равно можно нарваться на двойной вызов деструктора.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру