[sisyphus] malloc behaviour

Dmitry V. Levin =?iso-8859-1?q?ldv_=CE=C1_altlinux=2Eorg?=
Пн Ноя 27 01:44:30 MSK 2006


On Mon, Nov 27, 2006 at 04:23:07AM +0600, Slava Semushin wrote:
> --- Michael Shigorin 2006-11-26 21:43:56 +0200
> +++ Slava Semushin 2006-11-27 04:17:57 +0600
> 
> MS> Спамит cron (точнее, sysstat):
> MS> Date: Sun, 26 Nov 2006 20:20:01 +0200 (EET)
> MS> From: root на home (Cron Daemon)
> MS> To: root на home
> MS> Subject: Cron <root на home> /usr/lib/sa/sa1 1 1
> MS> realloc: Success
> 
>     Ну так это ошибка. Мне об этой ситуации Юра Каширин рассказывал:
>     malloc()/realloc() в случае ошибки не устанавливают errno, поэтому
>     если её использовать, то могут получить вот такие результаты.

malloc(3) придерживается другого мнения:
"The Unix98 standard requires malloc(), calloc(), and realloc() to set
errno to ENOMEM upon failure.  Glibc assumes that this is done (and the
glibc versions of these routines do this); if you use a private malloc
implementation that does not set errno, then certain library routines
may fail without having a reason in errno."

>     Там код типа такого, наверное:
> 
>     ptr = realloc(...);
>     if (ptr == NULL) {
>         perror("realloc");
>         exit(1);
>     }

Для таких случаев давно придумали xrealloc.


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20061127/c7c27474/attachment-0003.bin>


Подробная информация о списке рассылки Sisyphus