<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885308</guid>
        <pubDate>Sat, 21 Jan 2023 18:20:55 +0000</pubDate>
        <title>c6001: использование неинициализированной памяти. Почему?</title>
        <link>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885308</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=432564&view=findpost&p=3885306'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2023-01-21T21:17:02+03:00">21.01.23, 18:17</time></span><div class='quote '>Ну конечно нет никаких конструкторов у POD. Но по факту это ничего не меняет.<br>
В Стандарте определение объектов без инициализаторов называется default initialization и выполняется по-разному для классов и не-классов.<br>
Для классов вызывается конструктор по умолчанию. Если он не предоставлен программистом, он может быть сгенерирован компилятором. Если он не может быть сгенерирован, ошибка; если может, то он работает по тем же правилам инициализации для всех агрегированных объектов, т.е. все базовые объекты и поля инициализирует default initialization. Аналогично для массивов: default initialization для каждого элемента.<br>
Для не-классов ничего не выполняется. Это оставляет их в неизменном виде. Указатели являются не-классами.<br>
Ссылки и константные объекты не могут быть default initialization, это ошибка. Для агрегатов, содержащих в себе объекты этого типа, конструктор не может быть сгенерирован.<br>
Но в Стандарте есть ещё такая штука, как zero initialization. Она не применяется к автоматическим и динамическим объектам, но если применяется, то до любой другой инициализации, в частности и default initialization. Т.к. для классов default initialization вполне себе инициализатор, хоть и зачастую неявный, то работу zero initialization можно увидеть только на статических и локальных в потоках объектах не-классах. И да, она забивает объект нулями. За исключением указателей, которые ставятся в nullptr. (Это на случай, если у вас nullptr не равен побитово целочисленному нулю . Ну а вдруг.) И да, включая pad-ы между полями агрегатов. А, ещё для ссылок есть исключение: zero initialization для них не выполняется, но т.к. они обязаны быть value initialized, то этого не видно.</div></div><br>
ЧТД, RTFM :-)]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885306</guid>
        <pubDate>Sat, 21 Jan 2023 18:17:02 +0000</pubDate>
        <title>c6001: использование неинициализированной памяти. Почему?</title>
        <link>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885306</link>
        <description><![CDATA[Qraizer: Ну конечно нет никаких конструкторов у POD. Но по факту это ничего не меняет.<br>
В Стандарте определение объектов без инициализаторов называется default initialization и выполняется по-разному для классов и не-классов.<ul class="tag-list"><li>Для классов вызывается конструктор по умолчанию. Если он не предоставлен программистом, он может быть сгенерирован компилятором. Если он не может быть сгенерирован, ошибка; если может, то он работает по тем же правилам инициализации для всех агрегированных объектов, т.е. все базовые объекты и поля инициализирует default initialization. Аналогично для массивов: default initialization для каждого элемента.</li><li>Для не-классов ничего не выполняется. Это оставляет их в неизменном виде. Указатели являются не-классами.</li><li>Ссылки и константные объекты не могут быть default initialization, это ошибка. Для агрегатов, содержащих в себе объекты этого типа, конструктор не может быть сгенерирован.</li></ul>Но в Стандарте есть ещё такая штука, как zero initialization. Она не применяется к автоматическим и динамическим объектам, но если применяется, то до любой другой инициализации, в частности и default initialization. Т.к. для классов default initialization вполне себе инициализатор, хоть и зачастую неявный, то работу zero initialization можно увидеть только на статических и локальных в потоках объектах не-классах. И да, она забивает объект нулями. За исключением указателей, которые ставятся в nullptr. (Это на случай, если у вас nullptr не равен побитово целочисленному нулю ;). Ну а вдруг.) И да, включая pad-ы между полями агрегатов. А, ещё для ссылок есть исключение: zero initialization для них не выполняется, но т.к. они обязаны быть value initialized, то этого не видно.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885305</guid>
        <pubDate>Sat, 21 Jan 2023 17:41:45 +0000</pubDate>
        <title>c6001: использование неинициализированной памяти. Почему?</title>
        <link>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885305</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=432564&view=findpost&p=3885300'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Славян &#064; <time class="tag-quote__quoted-time" datetime="2023-01-21T17:17:48+00:00">21.01.23, 17:17</time></span><div class='quote '> Она вся подчёркивается волнистой.</div></div><br>
Ну я на форуме обычно на все смотрю корпускулярно - не видны эти ваши красные волны&#33;  8-) <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2023-01-21T17:43:26+00:00">21.01.23, 17:43</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=432564&view=findpost&p=3885297'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Dushevny &#064; <time class="tag-quote__quoted-time" datetime="2023-01-21T17:11:34+00:00">21.01.23, 17:11</time></span><div class='quote '>Что нет, что пустой и выкинутый оптимизатором по причине своей пустоты - для выходного кода результат одинаков.</div></div><br>
Не не не - &quot;точность - вежливость королей&quot;. Это нужно выяснить.]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885300</guid>
        <pubDate>Sat, 21 Jan 2023 17:17:48 +0000</pubDate>
        <title>c6001: использование неинициализированной памяти. Почему?</title>
        <link>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885300</link>
        <description><![CDATA[Славян: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=432564&view=findpost&p=3885290'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2023-01-21T16:01:34+00:00">21.01.23, 16:01</time></span><div class='quote '>на какую именно строку идет &quot;ругня&quot;?</div></div>Строка приведена. Она вся подчёркивается волнистой.<br>
Но суть то вся понята, ибо действительно x[0] то ли инициализировался, то ли нет - компилятор не знает, и вот на это использование и идёт ругань. Всё действительно просто.<br>
Это как тривиальное:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">int a;</div><div class="code_line">int b = a;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2023-01-21T17:23:34+00:00">21.01.23, 17:23</time></span></span><br>
Ну, чуть полнее, так:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">int *x, k=0;</div><div class="code_line">...</div><div class="code_line">x = new int[1000];</div><div class="code_line">...</div><div class="code_line">if( ... ) x[k++] = ...;</div><div class="code_line">if( !k )</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;...</div><div class="code_line">}else</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;int xMinMax[2];</div><div class="code_line">&nbsp;&nbsp;xMinMax[0] = xMinMax[1] = x[0]; // здесь подчёркивает и пишет &#39;c6001: Использование неинициализированной памяти &quot;*x&quot;&#39;</div><div class="code_line">&nbsp;&nbsp;...</div><div class="code_line">}</div></ol></div></div></div></div>Потому мне то вот понятно, что использован будет инициализированный элемент x[0], а машине - неведомо сие...]]></description>
        <author>Славян</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885297</guid>
        <pubDate>Sat, 21 Jan 2023 17:11:34 +0000</pubDate>
        <title>c6001: использование неинициализированной памяти. Почему?</title>
        <link>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885297</link>
        <description><![CDATA[Dushevny: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=432564&view=findpost&p=3885286'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2023-01-21T15:01:49+00:00">21.01.23, 15:01</time></span><div class='quote '>Что-то мне казалось, что для POD-типов нет ни конструкторов (не путать с аллокаторами), не их вызовов, ни по-умолчанию и ваапще никак&#33; </div></div>Что нет, что пустой и выкинутый оптимизатором по причине своей пустоты - для выходного кода результат одинаков. Может и есть исключение для POD-типов в стандарте - не помню, мне проще для себя для однообразия считать что конструктор есть, но пустой и потому соптимизированный.]]></description>
        <author>Dushevny</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885290</guid>
        <pubDate>Sat, 21 Jan 2023 16:01:34 +0000</pubDate>
        <title>c6001: использование неинициализированной памяти. Почему?</title>
        <link>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885290</link>
        <description><![CDATA[Majestio: <strong class='tag-b'>Славян</strong>, на какую именно строку идет &quot;ругня&quot;? Ты выдаешь такие &quot;крохи&quot; инфы, что просто приходится ломать спинной моск в попытках &quot;угадать&quot;  &gt;:( <br>
Ну что может быть проще привести <span class='tag-size' data-value='21' style='font-size:21pt;'><span class="tag-color tag-color-named" data-value="red" style="color: red"><strong class='tag-b'>весь</strong></span></span> проблемный код, и вывести <span class="tag-color tag-color-named" data-value="red" style="color: red"><span class='tag-size' data-value='21' style='font-size:21pt;'><strong class='tag-b'>все</strong></span></span> сообщения об ошибках и предупреждениях в первозданном виде?<br>
Не, без комментов далее ... <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2023-01-21T16:04:09+00:00">21.01.23, 16:04</time></span></span><br>
ADD: И даже после решения вопроса я не отказываюсь от своих &quot;фу&quot; и &quot;фи&quot; &gt;:(  8-)]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885287</guid>
        <pubDate>Sat, 21 Jan 2023 15:52:37 +0000</pubDate>
        <title>c6001: использование неинициализированной памяти. Почему?</title>
        <link>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885287</link>
        <description><![CDATA[Славян: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=432564&view=findpost&p=3885282'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>grgdvo &#064; <time class="tag-quote__quoted-time" datetime="2023-01-21T14:36:32+00:00">21.01.23, 14:36</time></span><div class='quote '>никаких условий нет??<br>
Все линейно??</div></div>Да, всё именно банально так. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2023-01-21T15:56:45+00:00">21.01.23, 15:56</time></span></span><br>
А, тьфу, всё понял&#33; Это, как и написал <strong class='tag-b'>Dushevny</strong>, оттого, что в x[0] то что-то кладётся по условия, а не всегда&#33;<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">int *x;</div><div class="code_line">...</div><div class="code_line">x = new int[1000];</div><div class="code_line">...</div><div class="code_line">if( ... ) x[0] = ...;</div><div class="code_line">if( ... )</div><div class="code_line">{</div><div class="code_line">...</div><div class="code_line">}else</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;int xMinMax[2];</div><div class="code_line">&nbsp;&nbsp;xMinMax[0] = xMinMax[1] = x[0]; // здесь подчёркивает и пишет &#39;c6001: Использование неинициализированной памяти &quot;*x&quot;&#39;</div><div class="code_line">&nbsp;&nbsp;...</div><div class="code_line">}</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2023-01-21T15:59:45+00:00">21.01.23, 15:59</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=432564&view=findpost&p=3885282'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>grgdvo &#064; <time class="tag-quote__quoted-time" datetime="2023-01-21T14:36:32+00:00">21.01.23, 14:36</time></span><div class='quote '>Вокруг<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">x = new int[1000];</div></ol></div></div></div></div>никаких условий нет??</div></div>Получается, ошибся я, - есть условие &#39;вокруг&#39;=после. Виноват-с... :blush:]]></description>
        <author>Славян</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885286</guid>
        <pubDate>Sat, 21 Jan 2023 15:01:49 +0000</pubDate>
        <title>c6001: использование неинициализированной памяти. Почему?</title>
        <link>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885286</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=432564&view=findpost&p=3885284'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Dushevny &#064; <time class="tag-quote__quoted-time" datetime="2023-01-21T14:40:48+00:00">21.01.23, 14:40</time></span><div class='quote '>для каждого элемента вызывается конструктор по-умолчанию</div></div><br>
Хе-хе ... вопрос интересный&#33; Что-то мне казалось, что для POD-типов нет ни конструкторов (не путать с аллокаторами), не их вызовов, ни по-умоланию и ваапще никак&#33; И тут такой ответ, что я в тупике ...  :-? <br>
<br>
<span class='tag-size' data-value='15' style='font-size:15pt;'><strong class='tag-b'>Вызываю <span class="tag-color tag-color-named" data-value="red" style="color: red">Qraizer</span>&#39;а&#33;</strong><br>
&gt;:-[</span> <br>
<br>
<img class='tag-img' src='https://s1.hostingkartinok.com/uploads/images/2023/01/16a2f55181eece6dd514b80de0c54b98.jpg' alt='user posted image'>]]></description>
        <author>Majestio</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885284</guid>
        <pubDate>Sat, 21 Jan 2023 14:40:48 +0000</pubDate>
        <title>c6001: использование неинициализированной памяти. Почему?</title>
        <link>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885284</link>
        <description><![CDATA[Dushevny: Потому что после new() для каждого элемента вызывается конструктор по-умолчанию. Для int он ничего не делает, в том числе и не обнуляет переменную. Поэтому каждый элемент этого массива остается непроинициализированным, т.е. содержит мусор, который был в куче на месте этого массива перед его созданием.]]></description>
        <author>Dushevny</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885282</guid>
        <pubDate>Sat, 21 Jan 2023 14:36:32 +0000</pubDate>
        <title>c6001: использование неинициализированной памяти. Почему?</title>
        <link>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885282</link>
        <description><![CDATA[grgdvo: Вокруг <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">x = new int[1000];</div></ol></div></div></div></div> никаких условий нет??<br>
Все линейно??]]></description>
        <author>grgdvo</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885276</guid>
        <pubDate>Sat, 21 Jan 2023 11:30:07 +0000</pubDate>
        <title>c6001: использование неинициализированной памяти. Почему?</title>
        <link>https://forum.sources.ru/index.php?showtopic=432564&amp;view=findpost&amp;p=3885276</link>
        <description><![CDATA[Славян: Есть код:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">int *x;</div><div class="code_line">...</div><div class="code_line">x = new int[1000];</div><div class="code_line">...</div><div class="code_line">if( ... )</div><div class="code_line">{</div><div class="code_line">...</div><div class="code_line">}else</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;int xMinMax[2];</div><div class="code_line">&nbsp;&nbsp;xMinMax[0] = xMinMax[1] = x[0]; // здесь подчёркивает и пишет &#39;c6001: Использование неинициализированной памяти &quot;*x&quot;&#39;</div><div class="code_line">&nbsp;&nbsp;...</div><div class="code_line">}</div></ol></div></div></div></div>Пишет такое предупреждение (см. код). VisualStudio 2019. Отчего так?]]></description>
        <author>Славян</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	