|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Alexander S Aganichev 2:5020/604.19 23 Jun 2001 00:03:26 To : Ilya Anfimov Subject : bug in gcc --------------------------------------------------------------------------------
Not so long ago (22 Jun 01) Ilya wrote to me:
>> OM> char *tra-la-la(unsigned long addr)
>> OM> {
>> OM> char sss;
>> ^ * забыл
>> OM> sss=(char *)malloc(sizeof("123"));
>>
>> OM> sprintf(sss,"%03d",addr);
>>
>> OM> return (sss);
>> OM> }
>>
>> OM> И если я делаю так:
>>
>> OM> fprintf(fp, "%s, %s, %d", tra-la-la(10),tra-la-la(20),30);
>>
>> OM> То эта зараза мне выдает строку 010, 010, 30
>> Вообще-то тут за исключением указанной ошибки похоже всё правильно.
IA> Да? Значение, возвращаемое malloc() не проверяется, unsigned long
IA> он пытается распечатать в 4-х байтовый массив, да еще с помощью
IA> sprintf().
Hу тогда ещё не проверяется значение, выдаваемое sprintf, не освобождается
память, неправильный тип в sprintf. Hо для данного конкретного случая эта
программа будет работать. Ты сколько раз видел реально, чтобы программе,
которая всего 8 байт выделяет malloc'ом не давали памяти? ;)
Have a nice day wherever you are...
Alexander
--- GoldED+ snapshot-2001.6.11 (WinNT 5.0.2195 i686)
* Origin: Bytepeceker's Nest, Zelenograd, Moscow, Russia (2:5020/604.19)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/174843b33b353.html, оценка из 5, голосов 10
|