- #include <stdio.h> 
- #include <stdint.h> // В частности, для uint16_t. 
-   
- int main(void) { 
- 	size_t nelem = 15; 
- 	// volatile не нужон. 
- 	uint16_t *testarray; 
- 	// Кастить результат malloc нужно в плюсах, в сишечке void * 
- 	// автоматически кастится в любой другой указатель. 
- 	// sizeof() лучше делать для дереференснутого указателя, а не 
- 	// для типа. Таким образом, если ты сменишь uint16_t на uint32_t, 
- 	// код не сломается. 
-     testarray  = malloc(sizeof(*- testarray ) *-  nelem );
-     if (!testarray) { 
-     	fprintf(- stderr , "malloc() failed\n");
 
-     } 
-   
-     // Как-то используем массив. 
-   
-     // Захотели изменить его размер. Объявляем другой указатель, потому что 
-     // realloc() может сфейлиться и вернуть NULL. Если бы мы написали 
-     // testarray = realloc(...), то в таком случае была бы утечка памяти. 
-     uint16_t *temp; 
-     size_t temp_size; 
-   
-     temp_size = nelem + 20; // Новая длина массива. 
-     temp  = realloc(- testarray , sizeof(*- testarray ) *-  temp_size );
-     if (!temp) { 
-     	fprintf(- stderr , "realloc() failed\n");
 
-     	// Тут мы можем выйти или продолжить использовать testarray и nelem 
-     	// со старым размером. 
-     } else { 
-     	testarray = temp; 
-     	nelem = temp_size; 
-     } 
-   
-     // Используем массив дальше. 
-   
- 	return 0; 
- } 
-   
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4gLy8g0JIg0YfQsNGB0YLQvdC+0YHRgtC4LCDQtNC70Y8gdWludDE2X3QuCgppbnQgbWFpbih2b2lkKSB7CglzaXplX3QgbmVsZW0gPSAxNTsKCS8vIHZvbGF0aWxlINC90LUg0L3Rg9C20L7QvS4KCXVpbnQxNl90ICp0ZXN0YXJyYXk7CgkvLyDQmtCw0YHRgtC40YLRjCDRgNC10LfRg9C70YzRgtCw0YIgbWFsbG9jINC90YPQttC90L4g0LIg0L/Qu9GO0YHQsNGFLCDQsiDRgdC40YjQtdGH0LrQtSB2b2lkICoKCS8vINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4INC60LDRgdGC0LjRgtGB0Y8g0LIg0LvRjtCx0L7QuSDQtNGA0YPQs9C+0Lkg0YPQutCw0LfQsNGC0LXQu9GMLgoJLy8gc2l6ZW9mKCkg0LvRg9GH0YjQtSDQtNC10LvQsNGC0Ywg0LTQu9GPINC00LXRgNC10YTQtdGA0LXQvdGB0L3Rg9GC0L7Qs9C+INGD0LrQsNC30LDRgtC10LvRjywg0LAg0L3QtQoJLy8g0LTQu9GPINGC0LjQv9CwLiDQotCw0LrQuNC8INC+0LHRgNCw0LfQvtC8LCDQtdGB0LvQuCDRgtGLINGB0LzQtdC90LjRiNGMIHVpbnQxNl90INC90LAgdWludDMyX3QsCgkvLyDQutC+0LQg0L3QtSDRgdC70L7QvNCw0LXRgtGB0Y8uCiAgICB0ZXN0YXJyYXkgPSBtYWxsb2Moc2l6ZW9mKCp0ZXN0YXJyYXkpICogbmVsZW0pOwogICAgaWYgKCF0ZXN0YXJyYXkpIHsKICAgIAlmcHJpbnRmKHN0ZGVyciwgIm1hbGxvYygpIGZhaWxlZFxuIik7CiAgICAJZXhpdCgxKTsKICAgIH0KICAgIAogICAgLy8g0JrQsNC6LdGC0L4g0LjRgdC/0L7Qu9GM0LfRg9C10Lwg0LzQsNGB0YHQuNCyLgogICAgCiAgICAvLyDQl9Cw0YXQvtGC0LXQu9C4INC40LfQvNC10L3QuNGC0Ywg0LXQs9C+INGA0LDQt9C80LXRgC4g0J7QsdGK0Y/QstC70Y/QtdC8INC00YDRg9Cz0L7QuSDRg9C60LDQt9Cw0YLQtdC70YwsINC/0L7RgtC+0LzRgyDRh9GC0L4KICAgIC8vIHJlYWxsb2MoKSDQvNC+0LbQtdGCINGB0YTQtdC50LvQuNGC0YzRgdGPINC4INCy0LXRgNC90YPRgtGMIE5VTEwuINCV0YHQu9C4INCx0Ysg0LzRiyDQvdCw0L/QuNGB0LDQu9C4CiAgICAvLyB0ZXN0YXJyYXkgPSByZWFsbG9jKC4uLiksINGC0L4g0LIg0YLQsNC60L7QvCDRgdC70YPRh9Cw0LUg0LHRi9C70LAg0LHRiyDRg9GC0LXRh9C60LAg0L/QsNC80Y/RgtC4LgogICAgdWludDE2X3QgKnRlbXA7CiAgICBzaXplX3QgdGVtcF9zaXplOwogICAgCiAgICB0ZW1wX3NpemUgPSBuZWxlbSArIDIwOyAvLyDQndC+0LLQsNGPINC00LvQuNC90LAg0LzQsNGB0YHQuNCy0LAuCiAgICB0ZW1wID0gcmVhbGxvYyh0ZXN0YXJyYXksIHNpemVvZigqdGVzdGFycmF5KSAqIHRlbXBfc2l6ZSk7CiAgICBpZiAoIXRlbXApIHsKICAgIAlmcHJpbnRmKHN0ZGVyciwgInJlYWxsb2MoKSBmYWlsZWRcbiIpOwogICAgCS8vINCi0YPRgiDQvNGLINC80L7QttC10Lwg0LLRi9C50YLQuCDQuNC70Lgg0L/RgNC+0LTQvtC70LbQuNGC0Ywg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMIHRlc3RhcnJheSDQuCBuZWxlbQogICAgCS8vINGB0L4g0YHRgtCw0YDRi9C8INGA0LDQt9C80LXRgNC+0LwuCiAgICB9IGVsc2UgewogICAgCXRlc3RhcnJheSA9IHRlbXA7CiAgICAJbmVsZW0gPSB0ZW1wX3NpemU7CiAgICB9CiAgICAKICAgIC8vINCY0YHQv9C+0LvRjNC30YPQtdC8INC80LDRgdGB0LjQsiDQtNCw0LvRjNGI0LUuCiAgICAKCXJldHVybiAwOwp9Cg==