<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: C++ Утечка памяти, указатели</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7002.html</link>
    <description>Доброго дня всем!&lt;br&gt;&lt;br&gt;Есть вопрос по поводу утечки памяти ( memory leak ) в C++.&lt;br&gt;Я пишу приложение под Qt, и на сколько я знаю Qt сам как бы &lt;br&gt;освобождает все указатели и все такое. Я не очень в кое-чем уверен, поэтому у меня  куча вопросов:&lt;br&gt;&lt;br&gt;Пишу в топик по C++, так как по большей части здесь будет именно про C++...&lt;br&gt;&lt;br&gt;   if ( int i = 0; i &amp;lt; 25; ++i ) &#123;&lt;br&gt;   ...&lt;br&gt;   QLabel *mixDevLabel = new QLabel;&lt;br&gt;   ...&lt;br&gt;   &#125;&lt;br&gt;&lt;br&gt;Если посмотреть на этот код, то видно что утечка есть, так как адрес на который указывал mixDevLabel&lt;br&gt;каждый раз перезаписывается ( если я правильно понимаю ).&lt;br&gt;Не понимаю как Qt сам умудряется освободить память ?!&lt;br&gt;&lt;br&gt;Я вижу только такое решение как освободить потом всю память:&lt;br&gt;&lt;br&gt;&lt;br&gt;   // .hpp&lt;br&gt;   ...&lt;br&gt;   QSlider **slider;&lt;br&gt;   ...&lt;br&gt;&lt;br&gt;   // .cpp&lt;br&gt;   MainWindow::MainWindow (  ) &#123;&lt;br&gt;   ...&lt;br&gt;   slider = new QSlider * &#091; 25 &#093;;&lt;br&gt;   ...&lt;br&gt;   if ( int i = 0; i &amp;lt; 25; ++i ) &#123;&lt;br&gt;   ...&lt;br&gt;slider &#091; i &#093; = new QSlider &#091; 1 &#093; ;&lt;br&gt;   ...&lt;br&gt;   &#125;&lt;br&gt;   ...&lt;br&gt;   &#125;;&lt;br&gt;&lt;br&gt;   MainWindow::~MainWindow (  ) &#123;&lt;br&gt; for ( int i = 0; i &amp;lt;</description>

<item>
    <title>C++ Утечка памяти, указатели (Лепс)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7002.html#18</link>
    <pubDate>Thu, 15 Jul 2010 05:12:04 GMT</pubDate>
    <description>Против утечек памяти легче всего использовать готовые утилиты для их поиска и локализации: BoundsChecker ( ссыль не помню ), Deleaker ( http://deleaker.ru/ )&lt;br&gt;</description>
</item>

<item>
    <title>C++ Утечка памяти, указатели (tosha)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7002.html#16</link>
    <pubDate>Thu, 06 Dec 2007 18:49:06 GMT</pubDate>
    <description>&amp;gt;Не ужели так тяжело ответить на вопрос? &lt;br&gt;&lt;br&gt;А какой смысл на него отвечать, если Вы не ориентируетесь в теме даже на уровне beginner ? Какая в этом ПРАКТИЧЕСКАЯ польза ? Это как учиться летать на самолете СРАЗУ на практике - не получилось, катапультируемся и летим на новом.&lt;br&gt;&lt;br&gt;&amp;gt;Спасибо, но Qt забывать не собираюсь. &lt;br&gt;&lt;br&gt;Да не за что. На самом деле ссылку, которую я дал сложно ПЕРЕоценить. Там собраны действительно ЛУЧШИЕ книги. А про QT это просто совет, начинать лучше с чего-то попроще.&lt;br&gt;</description>
</item>

<item>
    <title>C++ Утечка памяти, указатели (anonymous)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7002.html#15</link>
    <pubDate>Thu, 06 Dec 2007 02:33:39 GMT</pubDate>
    <description>&amp;gt; Я разве говорил про править? Я говорил для просмотра... под виндой помню была. Названия не помню.. Давно было.&lt;br&gt;&lt;br&gt;Можно тупой вопрос: зачем?  Разве нет отладчика?  (Если действительно не знаете, то отладчик называется gdb)&lt;br&gt;&lt;br&gt;&amp;gt; std::cout &amp;lt;&amp;lt; *p &amp;lt;&amp;lt; std::endl; // значение которое хнатиться по адресу &lt;br&gt;&amp;gt;(мусор) &lt;br&gt;&amp;gt; std::cout &amp;lt;&amp;lt; p &amp;lt;&amp;lt; std::endl;  // адрес который храниться в &lt;br&gt;&amp;gt;указателе (мусор) &lt;br&gt;&amp;gt; std::cout &amp;lt;&amp;lt; &amp;p &amp;lt;&amp;lt; std::endl; // адрес самого указателя &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;1474660693 &lt;br&gt;&lt;br&gt;Это очень &quot;повезло&quot;, что удалось прочитать значение по случайному адресу.  Уж лучше бы не повезло и вы бы получили segfault.  А так у вас может вдруг сложиться впечатление, что этот указатель рабочий только потому, что он указывает на кусок памяти вашей программы.  А ведь это не обязательно сегмент данных.  Не обязательно .bss.  Может быть и куча, или даже код!&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>C++ Утечка памяти, указатели (siegerstein)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7002.html#14</link>
    <pubDate>Wed, 05 Dec 2007 21:37:10 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;и на сколько она большая? &lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;я упал! &lt;br&gt;&amp;gt;&amp;gt;&amp;gt;:-) &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;Я думал падают только приложения :)) &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Ок, 8 программ имеют утечку памяти, остальные нет. &lt;br&gt;&amp;gt;Ну честно слово, где такую статистику то взять? =) &lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;Я имею ввиду такое:&lt;br&gt;Многие программы имеют утечку, но разработчики это не знают, или знают но не знают как выловть ее ( это очень трудно ), или к примеру opeтoffice дает утечку примерно в 5 Mb или что-то в том роде... То есть тот кто реально знает случаи утечки и насколько они были или есть большие...&lt;br&gt;Хочу знать на что мне расчитовать :))&lt;br&gt;&lt;br&gt;Не надо утрировать, я понимаю что статистики нигде нету, само собой.&lt;br&gt;&lt;br&gt;&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;простите, доступа к чьей памяти? &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;в линух смотрим в /proc/core =) Это вся память. &lt;br&gt;&amp;gt;/proc/&amp;lt;pid&amp;gt;/mem вроде память процесса (не помню точно).&lt;br&gt;&amp;gt;Разберетесь - мне расскажите =) &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;У меня на копме есть к примеру 1 гиг оперативки. &lt;br&gt;&amp;gt;&amp;gt;Можно просмотреть как-то ее содержимое? Или это невозможно? &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Умеем в хексах править прогр</description>
</item>

<item>
    <title>C++ Утечка памяти, указатели (vic)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7002.html#13</link>
    <pubDate>Wed, 05 Dec 2007 16:56:32 GMT</pubDate>
    <description>&amp;gt;&amp;gt;&amp;gt;1. Кто на практике знает, много ли программ под UNIX имеет утечку &lt;br&gt;&amp;gt;&amp;gt;&amp;gt;и на сколько она большая? &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;я упал! &lt;br&gt;&amp;gt;&amp;gt;:-) &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Я думал падают только приложения :)) &lt;br&gt;&lt;br&gt;Ок, 8 программ имеют утечку памяти, остальные нет.&lt;br&gt;Ну честно слово, где такую статистику то взять? =)&lt;br&gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;2. Есть ли программа для просмотра ( доступа ) памяти под UNIX? &lt;br&gt;&amp;gt;&amp;gt;&amp;gt;( Помню под винду была написана на Delphi )&lt;br&gt;&amp;gt;&amp;gt;простите, доступа к чьей памяти? &lt;br&gt;&lt;br&gt;в линух смотрим в /proc/core =) Это вся память.&lt;br&gt;/proc/&amp;lt;pid&amp;gt;/mem вроде память процесса (не помню точно).&lt;br&gt;Разберетесь - мне расскажите =)&lt;br&gt;&lt;br&gt;&amp;gt;У меня на копме есть к примеру 1 гиг оперативки. &lt;br&gt;&amp;gt;Можно просмотреть как-то ее содержимое? Или это невозможно? &lt;br&gt;&lt;br&gt;Умеем в хексах править программы на лету? =)&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;   Qt *p; &lt;br&gt;&amp;gt;&amp;gt;&amp;gt;   *p = 5; &lt;br&gt;&amp;gt;имелось в виду конечно int *p; &lt;br&gt;&lt;br&gt;Все равно нас ждет segfault =) память-то не выделена.&lt;br&gt;Объявлен указатель типа int в никуда.&lt;br&gt;&lt;br&gt;&amp;gt;- вопрос был не об этом &lt;br&gt;&amp;gt;- разве можно положить в int &quot;побольше&quot;? ИМХО компилятор не даст.. &lt;br&gt;&lt;br&gt;легко, 95&#037; программис</description>
</item>

<item>
    <title>C++ Утечка памяти, указатели (vic)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7002.html#12</link>
    <pubDate>Wed, 05 Dec 2007 16:41:49 GMT</pubDate>
    <description>&amp;gt;&amp;gt;&amp;gt;по неинициализированному(совершенно левому, т.е по адресу 0x000000) адресу &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;неинициализированный - это совсем не 0x000000, это значит что может быть ВСЕ &lt;br&gt;&amp;gt;&amp;gt;ЧТО УГОДНО :) &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;а ну да, просто очень часто там ноль. я щас проверил, когда &lt;br&gt;&amp;gt;эта переменна в стеке, там мусор какой то. а когда она &lt;br&gt;&amp;gt;глобальная и размещена в .bss там 0(ну навернаяка зависит от загрузчика &lt;br&gt;&amp;gt;ос). &lt;br&gt;&lt;br&gt;Просто глобальные переменные всегда инициализируются нулями.&lt;br&gt;Автопеременные нет, поэтому там мусор.&lt;br&gt;</description>
</item>

<item>
    <title>C++ Утечка памяти, указатели (siegerstein)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7002.html#11</link>
    <pubDate>Wed, 05 Dec 2007 15:15:02 GMT</pubDate>
    <description>&amp;gt;&amp;gt;Доброго дня всем! &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;И еще несколько вопросов на эту тему. &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;1. Кто на практике знает, много ли программ под UNIX имеет утечку &lt;br&gt;&amp;gt;&amp;gt;и на сколько она большая? &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;я упал! &lt;br&gt;&amp;gt;:-) &lt;br&gt;&lt;br&gt;Я думал падают только приложения :))&lt;br&gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;2. Есть ли программа для просмотра ( доступа ) памяти под UNIX? &lt;br&gt;&amp;gt;&amp;gt;( Помню под винду была написана на Delphi )&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;простите, доступа к чьей памяти? &lt;br&gt;&lt;br&gt;У меня на копме есть к примеру 1 гиг оперативки.&lt;br&gt;Можно просмотреть как-то ее содержимое? Или это невозможно?&lt;br&gt;&lt;br&gt;&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;   std::cout &amp;lt;&amp;lt; &quot;*p = &quot;&amp;lt;&amp;lt; *p &amp;lt;&amp;lt; std::endl; &lt;br&gt;&amp;gt;   std::cout &amp;lt;&amp;lt; &quot;p = &quot; &amp;lt;&amp;lt; p  &amp;lt;&amp;lt; &lt;br&gt;&amp;gt;std::endl; &lt;br&gt;&amp;gt;      //а вот и адресс указателя в &lt;br&gt;&amp;gt;памяти, я так понимаю это стек. &lt;br&gt;&amp;gt;   std::cout &amp;lt;&amp;lt; &quot;&amp;p= &quot; &amp;lt;&amp;lt; &amp;p &amp;lt;&amp;lt; std::endl; &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;   delete p; &lt;br&gt;&amp;gt;&#125; &lt;br&gt;&lt;br&gt;Ступил. Перепутал с ссылкой.&lt;br&gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;Далее... &lt;br&gt;&amp;gt;&amp;gt;Вот такой кусок кода приведет к ошибке сегментирования: &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;   Qt *p; &lt;br&gt;&amp;gt;&amp;gt;   *p = 5; &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;имелось в виду конечно int *p;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;А вот тут вы совершенно правы! </description>
</item>

<item>
    <title>C++ Утечка памяти, указатели (NuINu)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7002.html#10</link>
    <pubDate>Wed, 05 Dec 2007 13:20:41 GMT</pubDate>
    <description>&amp;gt;&amp;gt;по неинициализированному(совершенно левому, т.е по адресу 0x000000) адресу &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;неинициализированный - это совсем не 0x000000, это значит что может быть ВСЕ &lt;br&gt;&amp;gt;ЧТО УГОДНО :) &lt;br&gt;&lt;br&gt;а ну да, просто очень часто там ноль. я щас проверил, когда эта переменна в стеке, там мусор какой то. а когда она глобальная и размещена в .bss там 0(ну навернаяка зависит от загрузчика ос).&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>C++ Утечка памяти, указатели (Hordi)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7002.html#9</link>
    <pubDate>Wed, 05 Dec 2007 12:47:03 GMT</pubDate>
    <description>&amp;gt;по неинициализированному(совершенно левому, т.е по адресу 0x000000) адресу &lt;br&gt;&lt;br&gt;неинициализированный - это совсем не 0x000000, это значит что может быть ВСЕ ЧТО УГОДНО :)&lt;br&gt;</description>
</item>

</channel>
</rss>
