{"id":269780,"date":"2015-12-07T15:50:02","date_gmt":"2015-12-07T12:50:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=269780"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=269780","title":{"rendered":"memset \u2014 \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u0442\u044c\u043c\u044b"},"content":{"rendered":"<p>       <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/96a\/3eb\/efb\/96a3ebefb1714693a5fd9ef314aefce6.jpg\"\/><br \/>  \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/company\/pvs-studio\/blog\/272243\/\">\u0421\u0430\u043c\u0430\u044f \u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432 \u043c\u0438\u0440\u0435 \u0421\/\u0421++<\/a> \u044f \u0441\u0447\u0451\u043b \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u0443\u0433\u043b\u0443\u0431\u0438\u0442\u044c\u0441\u044f \u0432\u043e \u0437\u043b\u043e, \u0442\u0430\u044f\u0449\u0435\u0435\u0441\u044f \u0432 \u0442\u0451\u043c\u043d\u043e\u043c \u043f\u043e\u0433\u0440\u0435\u0431\u0435 <i>memset<\/i>, \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0448\u0438\u0440\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u044c \u0441\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0412 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u043f\u043e\u0432\u0441\u0435\u043c\u0435\u0441\u0442\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f memset(), \u0442\u0430\u044f\u0449\u0438\u0439 \u0432 \u0441\u0435\u0431\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043b\u043e\u0432\u0443\u0448\u0435\u043a. \u0412\u044b\u0434\u0435\u0440\u0436\u043a\u0430 \u0438\u0437 C++ Reference:  <\/p>\n<blockquote><p>void * memset ( void * ptr, int value, size_t num );<br \/>  <b>Fill block of memory<\/b><br \/>  Sets the first num bytes of the block of memory pointed by ptr to the specified value (interpreted as an unsigned char).<br \/>  <b>Parameters<\/b><br \/>  ptr \u2014 Pointer to the block of memory to fill.<br \/>  value \u2014 Value to be set. The value is passed as an int, but the function fills the block of memory using the unsigned char conversion of this value.<br \/>  num \u2014 Number of bytes to be set to the value. size_t is an unsigned integral type.<br \/>  <b>Return Value<\/b><br \/>  ptr is returned.<\/p><\/blockquote>\n<p> \u041a\u0430\u043a \u0443\u0436\u0435 \u043d\u0435\u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u043e \u043f\u043e\u0434\u043c\u0435\u0447\u0435\u043d\u043e, \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0433\u0440\u0430\u0431\u043b\u0435\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0434\u0430\u0436\u0435 \u043e\u043f\u044b\u0442\u043d\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438. \u0418\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435  <a href=\"http:\/\/habrahabr.ru\/users\/andrey2008\/\" class=\"user_link\">Andrey2008<\/a> \u043a\u0440\u0430\u0442\u043a\u043e\u0435 <b>\u043e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a<\/b>:<br \/>  \u21161. \u041f\u044b\u0442\u0430\u044f\u0441\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u043b\u0438\u0431\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 sizeof() \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\/\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043e\u043d \u0432\u0435\u0440\u043d\u0451\u0442 \u0432\u0430\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f 4 \u0438\u043b\u0438 8 \u0431\u0430\u0439\u0442, \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430\/\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.<br \/>  \u21162. \u0422\u0440\u0435\u0442\u0438\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 memset() \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0430\u0439\u0442, \u0430 \u043d\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445. \u0414\u043e\u0431\u0430\u0432\u043b\u044e \u0435\u0449\u0451, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0438\u043f int \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u0430\u043a 4, \u0442\u0430\u043a \u0438 8 \u0431\u0430\u0439\u0442, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b. \u041d\u0430 \u044d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c sizeof(int).<br \/>  \u21163. \u041d\u0435 \u043f\u0443\u0442\u0430\u0439\u0442\u0435 \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0434\u043b\u0438\u043d\u0430 \u0432 \u0431\u0430\u0439\u0442\u0430\u0445.<br \/>  \u21164. \u041d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 memset \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u0430.<br \/>  \u041d\u043e \u044d\u0442\u043e \u043b\u0438\u0448\u044c \u0432\u0435\u0440\u0448\u0438\u043d\u0430 \u0430\u0439\u0441\u0431\u0435\u0440\u0433\u0430.<\/p>\n<h3>\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0430 memset<\/h3>\n<p>  <b>memset<\/b> \u044d\u0442\u043e \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043e\u0431\u044f\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043f\u0440\u043e\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u0438 \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0443 <i> = {0}<\/i>, \u0432\u043c\u0435\u0441\u0442\u043e <i>memset<\/i>, \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0438\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0443 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u0432\u044b\u0448\u0430\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 memset (\u0442\u0430\u043a\u0436\u0435 ZeroMemory), \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u042f \u0440\u0435\u0448\u0438\u043b \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c.  <\/p>\n<pre><code class=\"cpp\">void doInitialize() {    char p0[25] = {0} ;           \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0432\u0441\u0435 25 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 0    char p1[25] = &quot;&quot; ;            \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0432\u0441\u0435 25 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 0     wchar_t p2[25] = {0} ;        \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 25 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 0    wchar_t p3[25] = L&quot;&quot; ;        \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0432\u0441\u0435 25 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 0     short        p4[62] = {0}     \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 62 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 0    int          p5[37] = {-1} ;  \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432 -1    unsigned int p6[10] = {89} ;  \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 89 } <\/code><\/pre>\n<p>  <b>C99 [$6.7.8\/21]<\/b>  <\/p>\n<blockquote><p> If there are fewer initializers in a brace-enclosed list than there are elements or members of an aggregate, or fewer characters in a string literal used to initialize an array of known size than there are elements in the array, the remainder of the aggregate shall be initialized implicitly the same as objects that have static storage duration.<\/p><\/blockquote>\n<p>  \u0417\u0430\u043e\u0434\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u21161, \u21162, \u21163 \u0441 \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u0435\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0431\u0443\u0444\u0435\u0440\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u0438 \u0442\u0440\u0435\u0442\u0438\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u043c\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u0435\u043c, \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0430\u0434\u043e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0436\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b. \u0412\u0441\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044f \u043d\u0435 \u043c\u043e\u0433\u0443, \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c gcc \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0432 android-ndk-r10c, \u0430 \u0442\u0430\u043a\u0436\u0435 gcc \u0432 \u0443\u0431\u0443\u043d\u0442\u0443 14.04.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">gcc -v<\/b><\/p>\n<div class=\"spoiler_text\">1) gcc version 4.9 20140827 (prerelease) (GCC) <br \/>  2) gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)  <\/div>\n<\/div>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0430 \u0442\u0430\u043a\u043e\u043c \u043a\u0443\u0441\u043a\u0435 \u043a\u043e\u0434\u0430:  <\/p>\n<pre><code class=\"cpp\">void empty_string(){     int i;     char p1[25] = {0};     printf(&quot;\\np1: &quot;);     for (i = 0; i &lt; 25; i++)         printf(&quot;%x,&quot;,p1[i]); } <\/code><\/pre>\n<p>  \u0418\u0442\u0430\u043a, \u0431\u0435\u0437 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 (-O0) \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0442\u0430\u043a\u043e\u0439 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 (\u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e objdump):  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">gcc -O0, ELF 32-bit, ARM, EABI5<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>    83d8:       e3a03000        mov     r3, #0     83dc:       e50b3024        str     r3, [fp, #-36]  ; 0x24     83e0:       e24b3020        sub     r3, fp, #32     83e4:       e3a02000        mov     r2, #0     83e8:       e5832000        str     r2, [r3]     83ec:       e2833004        add     r3, r3, #4     83f0:       e3a02000        mov     r2, #0     83f4:       e5832000        str     r2, [r3]     83f8:       e2833004        add     r3, r3, #4     83fc:       e3a02000        mov     r2, #0     8400:       e5832000        str     r2, [r3]     8404:       e2833004        add     r3, r3, #4     8408:       e3a02000        mov     r2, #0     840c:       e5832000        str     r2, [r3]     8410:       e2833004        add     r3, r3, #4     8414:       e3a02000        mov     r2, #0     8418:       e5832000        str     r2, [r3]     841c:       e2833004        add     r3, r3, #4     8420:       e3a02000        mov     r2, #0     8424:       e5c32000        strb    r2, [r3]     8428:       e2833001        add     r3, r3, #1<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">gcc -O0, ELF 64-bit, x86-64<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>  400700:       48 c7 45 d0 00 00 00 00    movq   $0x0,-0x30(%rbp)   400708:       48 c7 45 d8 00 00 00 00    movq   $0x0,-0x28(%rbp)   400710:       48 c7 45 e0 00 00 00 00    movq   $0x0,-0x20(%rbp)   400718:       c6 45 e8 00                movb   $0x0,-0x18(%rbp)<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041a\u0430\u043a \u0438 \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c, \u0431\u0435\u0437 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c run-time \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043a\u0443\u0448\u0430\u0442\u044c O(n) \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0433\u0434\u0435 n \u0434\u043b\u0438\u043d\u0430 \u0431\u0443\u0444\u0435\u0440\u0430). \u0427\u0442\u043e \u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439 (-O3) \u043c\u043e\u0436\u0435\u043c \u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0438\u0436\u0435.<br \/>  <b>gcc -O3, 32-bit, ARM<\/b><\/p>\n<pre><code>000083ac &lt;empty_string&gt;:     83ac:       e59f002c        ldr     r0, [pc, #44]   ; 83e0 &lt;empty_string+0x34&gt;     83b0:       e92d4038        push    {r3, r4, r5, lr}     83b4:       e08f0000        add     r0, pc, r0     83b8:       ebffffb2        bl      8288 &lt;printf@plt&gt;     83bc:       e59f5020        ldr     r5, [pc, #32]   ; 83e4 &lt;empty_string+0x38&gt;     83c0:       e3a04019        mov     r4, #25     83c4:       e08f5005        add     r5, pc, r5     83c8:       e1a00005        mov     r0, r5     83cc:       e3a01000        mov     r1, #0     83d0:       ebffffac        bl      8288 &lt;printf@plt&gt;     83d4:       e2544001        subs    r4, r4, #1     83d8:       1afffffa        bne     83c8 &lt;empty_string+0x1c&gt;     83dc:       e8bd8038        pop     {r3, r4, r5, pc}<\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">gcc -O3, 64-bit, x86-64<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>00000000004006d0 &lt;empty_string&gt;:   4006d0:       53                      push   %rbx   4006d1:       be a4 08 40 00          mov    $0x4008a4,%esi   4006d6:       bf 01 00 00 00          mov    $0x1,%edi   4006db:       31 c0                   xor    %eax,%eax   4006dd:       bb 32 00 00 00          mov    $0x32,%ebx   4006e2:       e8 d9 fd ff ff          callq  4004c0 &lt;__printf_chk@plt&gt;   4006e7:       66 0f 1f 84 00 00 00    nopw   0x0(%rax,%rax,1)   4006ee:       00 00    4006f0:       31 d2                   xor    %edx,%edx   4006f2:       31 c0                   xor    %eax,%eax   4006f4:       be aa 08 40 00          mov    $0x4008aa,%esi   4006f9:       bf 01 00 00 00          mov    $0x1,%edi   4006fe:       e8 bd fd ff ff          callq  4004c0 &lt;__printf_chk@plt&gt;   400703:       83 eb 01                sub    $0x1,%ebx   400706:       75 e8                   jne    4006f0 &lt;empty_string+0x20&gt;   400708:       5b                      pop    %rbx   400709:       c3                      retq   <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0412\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043a\u0443\u0441\u043e\u043a \u043a\u043e\u0434\u0430 \u0441 \u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435\u043c \u0432 run-time \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u043f\u0430\u043b, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043e\u0431\u0435\u0449\u0430\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c O(1), \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f \u043e\u0442\u043a\u0443\u0434\u0430 \u0436\u0435 \u0441\u0432\u043e\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0440\u0451\u0442 printf? \u041d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0432\u043e\u0442 \u044d\u0442\u043e\u0442 \u043a\u0443\u0441\u043e\u0447\u0435\u043a:  <\/p>\n<pre><code>83bc:           ldr     r5, [pc, #32] 83c0:           mov     r4, #25     ;\/\/ \u0412 r4 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0446\u0438\u043a\u043b\u043e\u0432 for, \u044d\u0442\u043e \u043d\u0430\u0448 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0446\u0438\u043a\u043b\u0430 83c4:           add     r5, pc, r5  ;\/\/ \u0412 r5 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0442\u0435\u043a\u0441\u0442 &quot;%x,&quot; \u043a\u0430\u043a \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443, \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u043d\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u043a 002c7825 83c8:           mov     r0, r5      ;\/\/ r5 \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 r0 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0446\u0438\u043a\u043b\u0430, \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 printf() 83cc:           mov     r1, #0      ;\/\/ \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 0 (\u0432\u043c\u0435\u0441\u0442\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e p1[i]) \u043a\u0430\u043a \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 printf() 83d0:           bl      8288 &lt;printf@plt&gt; 83d4:           subs    r4, r4, #1  ;\/\/ \u041e\u0442\u043d\u0438\u043c\u0430\u0435\u043c \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0432 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0435 \u0446\u0438\u043a\u043b\u0430 83d8:           bne     83c8 &lt;empty_string+0x1c&gt;  ;\/\/ \u0415\u0441\u043b\u0438 \u043d\u0435 \u0434\u043e\u0448\u043b\u0438 \u0434\u043e 0, \u0442\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u043e \u0446\u0438\u043a\u043b\u0430 83c8<\/code><\/pre>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u043a\u0438\u043d\u0443\u043b \u043c\u0430\u0441\u0441\u0438\u0432, \u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 0, \u043a\u0430\u043a \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u043d\u0443\u044e \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443. \u0425\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u0447\u0442\u043e \u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0435\u0441\u043b\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <i>memset<\/i>? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0443\u0441\u043e\u0447\u043a\u043e\u0432 objdump-\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0434 ARM:<br \/>  <i>\u0411\u0435\u0437 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 -O0<\/i>:<\/p>\n<pre><code>    83d8:       e24b3024        sub     r3, fp, #36     ; 0x24     83dc:       e1a00003        mov     r0, r3     83e0:       e3a01000        mov     r1, #0     83e4:       e3a02019        mov     r2, #25     83e8:       ebffffa3        bl      827c &lt;memset@plt&gt;<\/code><\/pre>\n<p><i>\u0421 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439 -O3<\/i>:<\/p>\n<pre><code>    83c0:       e58d3004        str     r3, [sp, #4]     83c4:       e58d3008        str     r3, [sp, #8]     83c8:       e58d300c        str     r3, [sp, #12]     83cc:       e58d3010        str     r3, [sp, #16]     83d0:       e58d3014        str     r3, [sp, #20]     83d4:       e58d3018        str     r3, [sp, #24]     83d8:       e5cd301c        strb    r3, [sp, #28]<\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">x86-64<\/b><\/p>\n<div class=\"spoiler_text\">\u0411\u0435\u0437 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 -O0:  <\/p>\n<pre><code>  400816:       ba 19 00 00 00          mov    $0x19,%edx   40081b:       be 00 00 00 00          mov    $0x0,%esi   400820:       48 89 c7                mov    %rax,%rdi   400823:       e8 a8 fc ff ff          callq  4004d0 &lt;memset@plt&gt;<\/code><\/pre>\n<p>\u0421 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439 -O3:<\/p>\n<pre><code>  4007f4:       48 c7 04 24 00 00 00 00    movq   $0x0,(%rsp)   4007fc:       48 c7 44 24 08 00 00 00    movq   $0x0,0x8(%rsp)   400805:       48 c7 44 24 10 00 00 00    movq   $0x0,0x10(%rsp)   40080e:       c6 44 24 18 00             movb   $0x0,0x18(%rsp)<\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u044b\u0437\u043e\u0432 <i>memset<\/i>, \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0435\u0433\u043e inline. \u041f\u0440\u0438 \u0442\u0430\u043a\u0438\u0445 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u0430\u0445 <i>memset<\/i> \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0437\u0430 O(n) \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0430 \u0432\u043e\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <i>= {0}<\/i> \u043f\u0440\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0437\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438 \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u043e\u0442\u043d\u0438\u043c\u0430\u044f \u0442\u0430\u043a\u0442\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043d\u0430\u0433\u043b\u043e \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u044f \u0441\u0430\u043c \u0444\u0430\u043a\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0438 \u043f\u043e\u0434\u043c\u0435\u043d\u044f\u044f \u0432\u0441\u0435 \u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043d\u0443\u043b\u044f\u043c\u0438. \u041d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u0438 \u044d\u0442\u043e \u0442\u0430\u043a \u0438 \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0435\u0441\u043b\u0438 \u043c\u044b \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438? \u0422\u0435\u0441\u0442\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0432\u0438\u0434: <\/p>\n<pre><code class=\"cpp\">void empty_string(){     int i;     char p1[25] = {0};     p1[0] = 65;     printf(&quot;\\np1: &quot;);     for (i = 0; i &lt; 25; i++)         printf(&quot;%x,&quot;,p1[i]); } <\/code><\/pre>\n<p> \u041f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u0431\u043b\u043e\u043a \u043a\u043e\u0434\u0430  <\/p>\n<pre><code>    8404:       e3a02041        mov     r2, #65 ; 0x41     8408:       e08f0000        add     r0, pc, r0     840c:       e58d3004        str     r3, [sp, #4]     8410:       e58d3008        str     r3, [sp, #8]     8414:       e58d300c        str     r3, [sp, #12]     8418:       e58d3010        str     r3, [sp, #16]     841c:       e58d3014        str     r3, [sp, #20]     8420:       e58d3018        str     r3, [sp, #24]     8424:       e5cd301c        strb    r3, [sp, #28]     8428:       e5cd2004        strb    r2, [sp, #4]<\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">x86-64<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>  4006f8:       48 c7 04 24 00 00 00    movq   $0x0,(%rsp)   4006ff:       00    400700:       48 c7 44 24 08 00 00    movq   $0x0,0x8(%rsp)   400707:       00 00    400709:       48 c7 44 24 10 00 00    movq   $0x0,0x10(%rsp)   400710:       00 00    400712:       c6 44 24 18 00          movb   $0x0,0x18(%rsp)   400717:       c6 04 24 41             movb   $0x41,(%rsp)<\/code><\/pre>\n<\/div>\n<\/div>\n<p>\u0418 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0430\u043c \u0432\u0441\u0442\u0430\u0432\u0438\u043b \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e <i>memset<\/i>. \u0410 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442, \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0440\u0430\u0441\u0442\u0435\u0442? \u0421\u043a\u0430\u0436\u0435\u043c, \u043d\u0435 25 \u0431\u0430\u0439\u0442, \u0430 25 \u043a\u0438\u043b\u043e\u0431\u0430\u0439\u0442!<\/p>\n<pre><code>    83fc:       e24ddc61        sub     sp, sp, #24832  ; 0x6100     8400:       e24dd0a8        sub     sp, sp, #168    ; 0xa8     8404:       e3a01000        mov     r1, #0     8408:       e59f2054        ldr     r2, [pc, #84]   ; 8464 &lt;empty_string+0x6c&gt;     840c:       e1a0000d        mov     r0, sp     8410:       ebffff99        bl      827c &lt;memset@plt&gt;<\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">x86-64<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">  400720:       55                      push   %rbp   400721:       ba a8 61 00 00          mov    $0x61a8,%edx   400726:       31 f6                   xor    %esi,%esi   400728:       53                      push   %rbx   400729:       48 81 ec b8 61 00 00    sub    $0x61b8,%rsp   400730:       48 89 e7                mov    %rsp,%rdi   400733:       48 8d ac 24 a8 61 00    lea    0x61a8(%rsp),%rbp   40073a:       00    40073b:       48 89 e3                mov    %rsp,%rbx   40073e:       64 48 8b 04 25 28 00    mov    %fs:0x28,%rax   400745:       00 00    400747:       48 89 84 24 a8 61 00    mov    %rax,0x61a8(%rsp)   40074e:       00    40074f:       31 c0                   xor    %eax,%eax   400751:       e8 8a fd ff ff          callq  4004e0 &lt;memset@plt&gt;   400756:       be 54 09 40 00          mov    $0x400954,%esi   40075b:       bf 01 00 00 00          mov    $0x1,%edi   400760:       31 c0                   xor    %eax,%eax   400762:       c6 04 24 41             movb   $0x41,(%rsp)   400766:       e8 a5 fd ff ff          callq  400510 &lt;__printf_chk@plt&gt;   40076b:       0f 1f 44 00 00          nopl   0x0(%rax,%rax,1)   400770:       0f be 13                movsbl (%rbx),%edx   400773:       31 c0                   xor    %eax,%eax   400775:       be 5a 09 40 00          mov    $0x40095a,%esi   40077a:       bf 01 00 00 00          mov    $0x1,%edi   40077f:       48 83 c3 01             add    $0x1,%rbx   400783:       e8 88 fd ff ff          callq  400510 &lt;__printf_chk@plt&gt;   400788:       48 39 eb                cmp    %rbp,%rbx   40078b:       75 e3                   jne    400770 &lt;empty1_string+0x50&gt;   40078d:       48 8b 84 24 a8 61 00    mov    0x61a8(%rsp),%rax   400794:       00    400795:       64 48 33 04 25 28 00    xor    %fs:0x28,%rax   40079c:       00 00    40079e:       75 0a                   jne    4007aa &lt;empty1_string+0x8a&gt;   4007a0:       48 81 c4 b8 61 00 00    add    $0x61b8,%rsp   4007a7:       5b                      pop    %rbx   4007a8:       5d                      pop    %rbp   4007a9:       c3                      retq<\/code><\/pre>\n<\/div>\n<\/div>\n<p>\u041d\u0430\u0434\u043e \u0436\u0435!<br \/>  <b>\u0421\u0442\u0440\u043e\u043a\u0430 = {0} \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0442\u044c\u043c\u044b, memset \u043b\u0438\u043a\u0443\u0435\u0442!<\/b><br \/>  \u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c\u0441\u044f, \u0432\u0441\u0451 \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438, \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u0442\u044c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f. <\/p>\n<h3>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438<\/h3>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u0448\u043d\u0438\u043c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <i>= &quot;&quot;<\/i>. \u0412 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043d\u0443\u043b\u044c-\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0441 \u0431\u0430\u0439\u0442\u043e\u0432\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c 0x00 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043a\u043e\u043d\u0435\u0446 \u0441\u0442\u0440\u043e\u043a\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u043e\u0431\u043d\u0443\u043b\u044f\u0442\u044c \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0438\u0448\u044c \u043e\u0431\u043d\u0443\u043b\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439. \u0412\u043e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443:  <\/p>\n<pre><code class=\"cpp\">void doInitializeCString() {    char p0[25] = {0} ;           \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0432\u0441\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0432 0    char p1[25] = &quot;&quot; ;            \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0432\u0441\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0432 0    char p2[25] ;    p2[0] = 0 ;                   \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0432 0    char p3[25] ;    memset(p3, 0, sizeof(p3)) ;   \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 25 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 0    char p4[25] ;    strcpy(p4, &quot;&quot;) ;              \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0432 0    char *p5 = (char *) calloc(25, sizeof(char)) ;  \/\/ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0432\u0441\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0432 0 }<\/code><\/pre>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0447\u0435\u0440\u0435\u0437 <i>= &quot;&quot;<\/i> \u0441\u043d\u043e\u0432\u0430 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c objdump. \u0411\u0435\u0437 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u044b \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u043c, \u0442\u0430\u043c \u0432\u0441\u0451 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e <i>= {0}<\/i>, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u0440\u0430\u0437\u0443 \u0441 \u043e\u043f\u0446\u0438\u0435\u0439 -O3. \u0418\u0442\u0430\u043a \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u0434 ARM <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0432\u043e\u0442 \u0442\u0430\u043a\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">void empty_string(){     int i;     char p1[25] = &quot;&quot;;     printf(&quot;\\np1: &quot;);     for (i = 0; i &lt; 25; i++)         printf(&quot;%x,&quot;,p1[i]); } <\/code><\/pre>\n<\/div>\n<\/div>\n<p><i>\u0418, \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430.<\/i> <\/p>\n<pre><code>    83c0:       e58d3004        str     r3, [sp, #4]     83c4:       e58d3008        str     r3, [sp, #8]     83c8:       e58d300c        str     r3, [sp, #12]     83cc:       e58d3010        str     r3, [sp, #16]     83d0:       e58d3014        str     r3, [sp, #20]     83d4:       e58d3018        str     r3, [sp, #24]     83d8:       e5cd301c        strb    r3, [sp, #28]<\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">x86-64<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>  400768:       48 c7 04 24 00 00 00 00    movq   $0x0,(%rsp)   400770:       48 c7 44 24 08 00 00 00    movq   $0x0,0x8(%rsp)   400779:       48 c7 44 24 10 00 00 00    movq   $0x0,0x10(%rsp)   400782:       c6 44 24 18 00          movb   $0x0,0x18(%rsp)<\/code><\/pre>\n<\/div>\n<\/div>\n<p>\u0422\u0430 \u043d\u0443 \u043b\u0430\u0434\u043d\u043e! \u0417\u0430\u0447\u0435\u043c \u0432 \u043d\u0443\u043b\u044c-\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043e\u0431\u043d\u0443\u043b\u044f\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b?! \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0436\u0435 \u043e\u0431\u043d\u0443\u043b\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0431\u0430\u0439\u0442. \u0425\u043c, \u0430 \u0435\u0441\u043b\u0438 \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 25 \u0442\u044b\u0441\u044f\u0447 \u0431\u0430\u0439\u0442, \u0447\u0442\u043e \u043e\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442? \u0410 \u0432\u043e\u0442 \u0447\u0442\u043e:  <\/p>\n<pre><code>    8474:       e24ddc61        sub     sp, sp, #24832  ; 0x6100     8478:       e24dd0a8        sub     sp, sp, #168    ; 0xa8     847c:       e3a0c000        mov     ip, #0     8480:       e28d3f6a        add     r3, sp, #424    ; 0x1a8     8484:       e1a0100c        mov     r1, ip     8488:       e59f204c        ldr     r2, [pc, #76]   ; 84dc &lt;empty_string+0x6c&gt;     848c:       e28d0004        add     r0, sp, #4     8490:       e503c1a8        str     ip, [r3, #-424] ; 0x1a8     8494:       ebffff78        bl      827c &lt;memset@plt&gt;<\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">x86-64<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>00000000004007b0 &lt;empty_string&gt;:   4007b0:       55                      push   %rbp   4007b1:       ba a0 61 00 00          mov    $0x61a0,%edx   4007b6:       31 f6                   xor    %esi,%esi   4007b8:       53                      push   %rbx   4007b9:       48 81 ec b8 61 00 00    sub    $0x61b8,%rsp   4007c0:       48 8d 7c 24 08          lea    0x8(%rsp),%rdi   4007c5:       48 8d ac 24 a8 61 00    lea    0x61a8(%rsp),%rbp   4007cc:       00    4007cd:       48 c7 04 24 00 00 00    movq   $0x0,(%rsp)   4007d4:       00    4007d5:       64 48 8b 04 25 28 00    mov    %fs:0x28,%rax   4007dc:       00 00    4007de:       48 89 84 24 a8 61 00    mov    %rax,0x61a8(%rsp)   4007e5:       00    4007e6:       31 c0                   xor    %eax,%eax   4007e8:       48 89 e3                mov    %rsp,%rbx   4007eb:       e8 f0 fc ff ff          callq  4004e0 &lt;memset@plt&gt;   4007f0:       be 54 09 40 00          mov    $0x400954,%esi   4007f5:       bf 01 00 00 00          mov    $0x1,%edi   4007fa:       31 c0                   xor    %eax,%eax   4007fc:       e8 0f fd ff ff          callq  400510 &lt;__printf_chk@plt&gt;   400801:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)   400808:       0f be 13                movsbl (%rbx),%edx   40080b:       31 c0                   xor    %eax,%eax   40080d:       be 5a 09 40 00          mov    $0x40095a,%esi   400812:       bf 01 00 00 00          mov    $0x1,%edi   400817:       48 83 c3 01             add    $0x1,%rbx   40081b:       e8 f0 fc ff ff          callq  400510 &lt;__printf_chk@plt&gt;   400820:       48 39 eb                cmp    %rbp,%rbx   400823:       75 e3                   jne    400808 &lt;empty_string+0x58&gt;   400825:       48 8b 84 24 a8 61 00    mov    0x61a8(%rsp),%rax   40082c:       00    40082d:       64 48 33 04 25 28 00    xor    %fs:0x28,%rax   400834:       00 00    400836:       75 0a                   jne    400842 &lt;empty_string+0x92&gt;   400838:       48 81 c4 b8 61 00 00    add    $0x61b8,%rsp   40083f:       5b                      pop    %rbx   400840:       5d                      pop    %rbp   400841:       c3                      retq<\/code><\/pre>\n<\/div>\n<\/div>\n<p> \u041f\u043e\u0445\u043e\u0436\u0435, \u0442\u0451\u043c\u043d\u044b\u0439 memset \u043f\u0440\u0435\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u0441. \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0441\u0451 \u0435\u0449\u0451 \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0442\u0438\u0432 \u0442\u044c\u043c\u044b, \u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u043b\u043e\u0432\u0443\u0448\u043a\u0438 \u0432\u0430\u0441 \u043f\u043e\u0434\u0436\u0438\u0434\u0430\u044e\u0442.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/d27\/37a\/299\/d2737a29992245fa956735254a61f583.png\"\/><\/p>\n<h3>memset \u043c\u043e\u0436\u0435\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0438\u0441\u043b\u0430 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438<\/h3>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u043f\u043e\u0431\u0430\u0439\u0442\u043e\u0432\u044b\u043c \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445.  <\/p>\n<pre><code class=\"cpp\">void doInitializeToMistakenValues() {    char           pChar[25] ;    unsigned char  pUChar[25] ;    short          pShort[25] ;    unsigned short pUShort[25] ;    int            pInt[25] ;    unsigned int   pUInt[25] ;     \/\/ \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f 2-\u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0445 \u0438 4-\u0431\u0430\u0439\u0442\u043e\u0432\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u044b \u043e\u0442 \u0435\u0434\u0438\u043d\u0438\u0446\u044b    memset(pChar,   1,  sizeof(pChar)) ;   \/\/ 1    memset(pUChar,  1,  sizeof(pUChar)) ;  \/\/ 1    memset(pShort,  1,  sizeof(pShort)) ;  \/\/ 257    memset(pUShort, 1,  sizeof(pUShort)) ; \/\/ 257    memset(pInt,    1,  sizeof(pInt)) ;    \/\/ 16843009    memset(pUInt,   1,  sizeof(pUInt)) ;   \/\/ 16843009     \/\/ \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f unsigned \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u0431\u0430\u0439\u0442\u0430\u043c\u0438 0xFF    memset(pChar,   -1, sizeof(pChar)) ;   \/\/ -1    memset(pUChar,  -1, sizeof(pUChar)) ;  \/\/ 255    memset(pShort,  -1, sizeof(pShort)) ;  \/\/ -1    memset(pUShort, -1, sizeof(pUShort)) ; \/\/ 65535    memset(pInt,    -1, sizeof(pInt)) ;    \/\/ -1    memset(pUInt,   -1, sizeof(pUInt)) ;   \/\/ 4294967295 } <\/code><\/pre>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f. \u0412\u043e\u0442 \u0438\u043c\u0435\u0435\u043c \u0441\u043a\u0430\u0436\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 int, \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0432\u0442\u043e\u0440\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0435\u0434\u0438\u043d\u0438\u0446\u0443, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442?<br \/>  \u0410 \u0432\u043e\u0442 \u0447\u0442\u043e:<br \/>  0x01010101 \u2014 \u0432 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0430\u0439\u0442 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d \u0435\u0434\u0438\u043d\u0438\u0446\u0435\u0439, \u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<br \/>  0x00000001 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 memset. \u041d\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043d\u0435 \u0431\u0430\u0433, \u044d\u0442\u043e \u0444\u0438\u0447\u0430.<br \/>  \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0437\u043d\u0430\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0444\u0438\u0447 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u043c \u043e\u0448\u0438\u0431\u043a\u0430\u043c.<\/p>\n<h3>memset \u043c\u043e\u0436\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>  \u0415\u0441\u043b\u0438 \u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b double \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u0430\u0439\u0442\u044b -1, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 Not-A-Number (NaN), \u0430 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439, \u043a\u0430\u0436\u0434\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c NaN \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0440\u0430\u0449\u0430\u0442\u044c NaN, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0430\u0440\u0443\u0448\u0430\u044f \u0432\u0441\u044e \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439.<br \/>  \u0422\u0430\u043a\u0438\u043c \u0436\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c -1 \u0432 \u0442\u0438\u043f bool \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0438 \u043e\u043d \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0438 true, \u043d\u0438 false. \u0425\u043e\u0442\u044f \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u0431\u044f \u043a\u0430\u043a true. \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432\u2026<\/p>\n<p>  \u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435, memset \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85\">\u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445<\/a>. \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 memset \u0441 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u043c\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/545\/9cd\/7c9\/5459cd7c917240c7a4bb049283c50adb.png\"\/><br \/>  <i>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b <a href=\"https:\/\/augias.org\/paercebal\/tech_doc\/doc.en\/cp.memset_is_evil.html\">memset is evil<\/a>.<br \/>  \u0422\u0430\u043a\u0436\u0435 \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u043f\u0440\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <a href=\"http:\/\/www.viva64.com\/ru\/b\/0129\/\">printf<\/a><\/i>.               <\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/272269\/\"> http:\/\/habrahabr.ru\/post\/272269\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/96a\/3eb\/efb\/96a3ebefb1714693a5fd9ef314aefce6.jpg\"\/><br \/>  \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/company\/pvs-studio\/blog\/272243\/\">\u0421\u0430\u043c\u0430\u044f \u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432 \u043c\u0438\u0440\u0435 \u0421\/\u0421++<\/a> \u044f \u0441\u0447\u0451\u043b \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u0443\u0433\u043b\u0443\u0431\u0438\u0442\u044c\u0441\u044f \u0432\u043e \u0437\u043b\u043e, \u0442\u0430\u044f\u0449\u0435\u0435\u0441\u044f \u0432 \u0442\u0451\u043c\u043d\u043e\u043c \u043f\u043e\u0433\u0440\u0435\u0431\u0435 <i>memset<\/i>, \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u0448\u0438\u0440\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u044c \u0441\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-269780","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/269780","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=269780"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/269780\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=269780"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=269780"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=269780"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}