<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: char,0,sizeof Часть3</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7150.html</link>
    <description>Здравствуйте! Спасибо за ответы в предыдущей теме (Часть,Часть2).&lt;br&gt;Зделал примерно, так:&lt;br&gt;&lt;br&gt;char head&#091;4&#093; = &#123;11,1,0,13&#125;;&lt;br&gt;char cret&#091;4&#093; = &#123;0,1,0,22&#125;;&lt;br&gt;&lt;br&gt;char* packet = new char&#091;8&#093;;&lt;br&gt;&lt;br&gt;memcpy(packet,head,sizeof(head)); //копируем head в packet&lt;br&gt;memcpy(packet+sizeof(head),cret,sizeof(cret)); //присоединяем у packet cret&lt;br&gt;&lt;br&gt;На выходе получается 11101301022&lt;br&gt;&lt;br&gt;Но&lt;br&gt;cout &amp;lt;&amp;lt; sizeof(packet) &amp;lt;&amp;lt; endl; //Выдает 4&lt;br&gt;&lt;br&gt;Почему 4, а не 8?;&lt;br&gt;Что я делаю не так?&lt;br&gt;&lt;br&gt;delete packet;&lt;br&gt;&lt;br&gt;</description>

<item>
    <title>char,0,sizeof Часть3 (phpcoder)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7150.html#6</link>
    <pubDate>Mon, 04 Feb 2008 07:59:43 GMT</pubDate>
    <description>&#091;...&#093;&lt;br&gt;&amp;gt;1) В каких случаях я должен выделять память в куче, а когда &lt;br&gt;&amp;gt;в стеке?  т.е. какие у них +/-, если так можно сказать.&lt;br&gt;&lt;br&gt;Зависит от задачи. Для больших данных (скажем, огромного массива) память лучше выделять из кучи, а не на стеке, т.к. стек имеет фиксированный размер и обычно не очень велик. Если вы возвращаете указатель на данные, то придётся всегда выделять память на куче, т.к. переменные из стека очищаются (затираются) при выходе из ф-ции. Если всё время выделять память на куче, то весьма возможны утечки памяти, когда вы забудете её освободить (а сборщика мусора в С++ нет), а память выделенная на стеке обычно &quot;освобождается&quot; сама при выходе из ф-ции (области видимости).&lt;br&gt;&lt;br&gt;Лучше почитать что-нибудь в интернете/книжках на эту тему, ну и конечно же практиковаться.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>char,0,sizeof Часть3 (Fisher)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7150.html#5</link>
    <pubDate>Mon, 04 Feb 2008 04:56:04 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;... &lt;br&gt;&amp;gt;cout &amp;lt;&amp;lt; PACKET_SIZE &amp;lt;&amp;lt; endl; &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Ну или выделять память не на куче (как делает new), а на &lt;br&gt;&amp;gt;стеке. В этом случае можно будет использовать sizeof(): &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;char packet&#091;8&#093;; &lt;br&gt;&amp;gt;... &lt;br&gt;&amp;gt;cout &amp;lt;&amp;lt; sizeof(packet) &amp;lt;&amp;lt; endl; &lt;br&gt;&lt;br&gt;Спасибо!&lt;br&gt;&lt;br&gt;И еще вопрос если можно:&lt;br&gt;&lt;br&gt;1) В каких случаях я должен выделять память в куче, а когда в стеке?&lt;br&gt;т.е. какие у них +/-, если так можно сказать.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>char,0,sizeof Часть3 (phpcoder)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7150.html#4</link>
    <pubDate>Mon, 04 Feb 2008 04:42:10 GMT</pubDate>
    <description>&#091;...&#093;&lt;br&gt;&amp;gt;Тогда, как получить размер packet(количество байт)? &lt;br&gt;&lt;br&gt;При выделении памяти с помощью new использовать переменную, эта переменная и будет размером packet (в случае char, для других типов размер packet будет вычисляться как PACKET_SIZE * sizeof(type)).&lt;br&gt;&lt;br&gt;const size_t PACKET_SIZE = 8;&lt;br&gt;char* packet = new char&#091;PACKET_SZIE&#093;;&lt;br&gt;...&lt;br&gt;cout &amp;lt;&amp;lt; PACKET_SIZE &amp;lt;&amp;lt; endl;&lt;br&gt;&lt;br&gt;Ну или выделять память не на куче (как делает new), а на стеке. В этом случае можно будет использовать sizeof():&lt;br&gt;&lt;br&gt;&lt;br&gt;char packet&#091;8&#093;;&lt;br&gt;...&lt;br&gt;cout &amp;lt;&amp;lt; sizeof(packet) &amp;lt;&amp;lt; endl;&lt;br&gt;</description>
</item>

<item>
    <title>char,0,sizeof Часть3 (Fisher)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7150.html#3</link>
    <pubDate>Mon, 04 Feb 2008 04:31:51 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&#091;...&#093; &lt;br&gt;&amp;gt;&amp;gt;cout &amp;lt;&amp;lt; sizeof(packet) &amp;lt;&amp;lt; endl; //Выдает 4 &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;Почему 4, а не 8?;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Вы получили размер указателя. В данном случае, на 32-битной архитектуре, размер указателя &lt;br&gt;&amp;gt;равняется размеру типа int и равен 4 байтам. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&#091;...&#093; &lt;br&gt;&lt;br&gt;Тогда, как получить размер packet(количество байт)?&lt;br&gt;</description>
</item>

<item>
    <title>char,0,sizeof Часть3 (phpcoder)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7150.html#2</link>
    <pubDate>Mon, 04 Feb 2008 04:21:54 GMT</pubDate>
    <description>&#091;...&#093;&lt;br&gt;&amp;gt;char* packet = new char&#091;8&#093;; &lt;br&gt;&lt;br&gt;&#091;...&#093;&lt;br&gt;&amp;gt;cout &amp;lt;&amp;lt; sizeof(packet) &amp;lt;&amp;lt; endl; //Выдает 4 &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Почему 4, а не 8?;&lt;br&gt;&lt;br&gt;Вы получили размер указателя. В данном случае, на 32-битной архитектуре, размер указателя равняется размеру типа int и равен 4 байтам.&lt;br&gt;&lt;br&gt;&#091;...&#093;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>char,0,sizeof Часть3 (slava.semushingmail.com)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7150.html#1</link>
    <pubDate>Mon, 04 Feb 2008 04:19:37 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;На выходе получается 11101301022 &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Но &lt;br&gt;&amp;gt;cout &amp;lt;&amp;lt; sizeof(packet) &amp;lt;&amp;lt; endl; //Выдает 4 &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Почему 4, а не 8?; &lt;br&gt;&amp;gt;Что я делаю не так? &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;delete packet; &lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
