<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: malloc</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8974.html</link>
    <description>int main (int argc, char *argv&#091;&#093;)&lt;br&gt;  &#123;&lt;br&gt;   char *test;&lt;br&gt;   test = (char *) malloc(0 * sizeof(char));&lt;br&gt;   memset( test, 0, 10 );&lt;br&gt;&lt;br&gt;   if ( test == NULL ) &#123; printf(&quot;Error &#092;n&quot;); &#125;&lt;br&gt;&lt;br&gt;   char flag&#091;500&#093;;&lt;br&gt;   memset(flag,0,500);&lt;br&gt;&lt;br&gt;   strcpy(flag,&quot;abcdifghlkopm1234567890abcdifghlkopm1234567890abcdifghlkopm1234567890&quot;);&lt;br&gt;&lt;br&gt;   strcpy(test,flag);&lt;br&gt;&lt;br&gt;   printf(&quot;&#037;s&#092;n&quot;, test);&lt;br&gt; &lt;br&gt;   free(test);&lt;br&gt;   &lt;br&gt;   return 0;&lt;br&gt;  &#125;&lt;br&gt;&lt;br&gt;Вот такой пример не догоняю почему не сегфолтится ведь маллок не выделил достаточное кол-во памяти ?&lt;br&gt;</description>

<item>
    <title>malloc (Ilya Lihachev)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8974.html#8</link>
    <pubDate>Wed, 22 Dec 2010 13:03:39 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;    char flag&#091;500&#093;; &lt;br&gt;&amp;gt;    memset(flag,0,500); &lt;br&gt;&amp;gt;    strcpy(flag,&quot;abcdifghlkopm1234567890abcdifghlkopm1234567890abcdifghlkopm1234567890&quot;); &lt;br&gt;&amp;gt;    strcpy(test,flag); &lt;br&gt;&amp;gt;    printf(&quot;&#037;s&#092;n&quot;, test); &lt;br&gt;&amp;gt;    free(test); &lt;br&gt;&amp;gt;    return 0; &lt;br&gt;&amp;gt;   &#125; &lt;br&gt;&amp;gt; Вот такой пример не догоняю почему не сегфолтится ведь маллок не выделил &lt;br&gt;&amp;gt; достаточное кол-во памяти ?&lt;br&gt;&lt;br&gt;If size is 0, malloc allocates a zero-length item in the heap and returns a valid pointer to that item. &lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>malloc (guest)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8974.html#7</link>
    <pubDate>Wed, 22 Dec 2010 09:49:27 GMT</pubDate>
    <description>&amp;gt; по поводу аллока я уже  проиграл ситуацию , слишком там уж &lt;br&gt;&amp;gt; много (НО) хотя согласен &lt;br&gt;&amp;gt; заманчивый инструмент..&lt;br&gt;&lt;br&gt;Ну да)&lt;br&gt;у меня был не большой уровень вложенности, известный размер стэка (хотя почти все платформы позволяют оверкомит через стек) и лок от рекурсий в опасных местах. Не падает)))&lt;br&gt;В любом случае для маленьких блоков похожий инструмент не сложно реализовать на sys/queue.h и одном malloc(). &lt;br&gt; &lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>malloc (сайлон)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8974.html#6</link>
    <pubDate>Wed, 22 Dec 2010 09:38:09 GMT</pubDate>
    <description>&amp;gt;&amp;gt; выделяет память без разбору, от 10 байт до 10000, все работает прекрасно, &lt;br&gt;&amp;gt; Если работает действительно прекрасно, то зачем что-то трогать))) &lt;br&gt;&amp;gt;&amp;gt; Чем это черевато, тем что память рано или позно не сможет быть &lt;br&gt;&amp;gt;&amp;gt; выданна или просто возрастет время выдиления этой памяти из кучи.&lt;br&gt;&amp;gt; в боевых условиях я видел только 2й вариант, а 1й только на &lt;br&gt;&amp;gt; синтетических тестах.&lt;br&gt;&amp;gt; Например я в похожей задаче использовал alloca(3) (да, знаю черевато, но быстро &lt;br&gt;&amp;gt; и дешево), и чутка подпиленные под свои реалии апачевские apr_pool_*().&lt;br&gt;&lt;br&gt;по поводу аллока я уже  проиграл ситуацию , слишком там уж много (НО) хотя согласен&lt;br&gt;заманчивый инструмент..&lt;br&gt;</description>
</item>

<item>
    <title>malloc (guest)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8974.html#5</link>
    <pubDate>Wed, 22 Dec 2010 09:30:16 GMT</pubDate>
    <description>&amp;gt; выделяет память без разбору, от 10 байт до 10000, все работает прекрасно, &lt;br&gt;&lt;br&gt;Если работает действительно прекрасно, то зачем что-то трогать)))&lt;br&gt; &lt;br&gt;&amp;gt; Чем это черевато, тем что память рано или позно не сможет быть &lt;br&gt;&amp;gt; выданна или просто возрастет время выдиления этой памяти из кучи.&lt;br&gt;&lt;br&gt;в боевых условиях я видел только 2й вариант, а 1й только на синтетических тестах.&lt;br&gt;&lt;br&gt;Например я в похожей задаче использовал alloca(3) (да, знаю черевато, но быстро и дешево), и чутка подпиленные под свои реалии апачевские apr_pool_*().&lt;br&gt;</description>
</item>

<item>
    <title>malloc (сайлон)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8974.html#4</link>
    <pubDate>Wed, 22 Dec 2010 09:10:17 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; Это все библия (posix) виновата)Поведение для malloc(0) не определено.&lt;br&gt;&amp;gt; Например glibc выделит блок минимально возможного размера (обычно 16байт для 32битных систем &lt;br&gt;&amp;gt; и 32байта для 64битных).&lt;br&gt;&amp;gt; freebsd в зависимости от настроек вернет ошибку или 1 блок размером 1 &lt;br&gt;&amp;gt; байт и тут уж если повезет, то упадет сразу на memset(), &lt;br&gt;&amp;gt; иначе глюки.&lt;br&gt;&amp;gt; netbsd возвращает некий минимальный блок.&lt;br&gt;&amp;gt; openbsd считает malloc(0) жутким багом и возвращает валидный указатель на защищенную область &lt;br&gt;&amp;gt; памяти, т.е. любая попытка записи/чтения ведет к сегфолту, но free() сделать &lt;br&gt;&amp;gt; можно.&lt;br&gt;&lt;br&gt;Понятно!&lt;br&gt;&lt;br&gt;Последний вопрос по поводу маллока , вот я написал некий сервис, который на каждый чих&lt;br&gt;выделяет память без разбору, от 10 байт до 10000, все работает прекрасно, но бытует мнение ,что выделять часто маленькие фрагменты памяти есть неправильно!!!&lt;br&gt;Чем это черевато, тем что память рано или позно не сможет быть выданна или просто возрастет время выдиления этой памяти из кучи. &lt;br&gt;</description>
</item>

<item>
    <title>malloc (guest)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8974.html#3</link>
    <pubDate>Wed, 22 Dec 2010 08:17:45 GMT</pubDate>
    <description>&amp;gt; Вот такой пример не догоняю почему не сегфолтится ведь маллок не выделил &lt;br&gt;&amp;gt; достаточное кол-во памяти ?&lt;br&gt;&lt;br&gt;Это все библия (posix) виновата)Поведение для malloc(0) не определено.&lt;br&gt;&lt;br&gt;Например glibc выделит блок минимально возможного размера (обычно 16байт для 32битных систем и 32байта для 64битных).&lt;br&gt;freebsd в зависимости от настроек вернет ошибку или 1 блок размером 1 байт и тут уж если повезет, то упадет сразу на memset(), иначе глюки.&lt;br&gt;netbsd возвращает некий минимальный блок.&lt;br&gt;openbsd считает malloc(0) жутким багом и возвращает валидный указатель на защищенную область памяти, т.е. любая попытка записи/чтения ведет к сегфолту, но free() сделать можно.&lt;br&gt;</description>
</item>

<item>
    <title>malloc (phpcoder)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8974.html#2</link>
    <pubDate>Wed, 22 Dec 2010 07:47:07 GMT</pubDate>
    <description>P.S. Ubuntu 9.04&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>malloc (phpcoder)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8974.html#1</link>
    <pubDate>Wed, 22 Dec 2010 07:46:29 GMT</pubDate>
    <description>&amp;gt; Вот такой пример не догоняю почему не сегфолтится ведь маллок не выделил &lt;br&gt;&amp;gt; достаточное кол-во памяти ?&lt;br&gt;&lt;br&gt;У меня падает:&lt;br&gt;&lt;br&gt;*** glibc detected *** ./hello: free(): invalid next size (fast): 0x09840008 ***&lt;br&gt;======= Backtrace: =========&lt;br&gt;/lib/tls/i686/cmov/libc.so.6&#091;0xb77d3704&#093;&lt;br&gt;/lib/tls/i686/cmov/libc.so.6(cfree+0x96)&#091;0xb77d56b6&#093;&lt;br&gt;./hello&#091;0x804860f&#093;&lt;br&gt;/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe5)&#091;0xb777a775&#093;&lt;br&gt;./hello&#091;0x8048491&#093;&lt;br&gt;======= Memory map: ========&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
