Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Konstantin Tokar                     2:5020/400     18 Aug 2002  20:59:16
 To : Alexey Desyatnik
 Subject : Re: Perl, ООП и критика
 -------------------------------------------------------------------------------- 
 
 
 Alexey Desyatnik wrote:
 
 > 
 > "Konstantin Tokar" <tokar@apmsun.mpei.ac.ru> сообщил/сообщила в новостях
 > следующее: news:3D5F5FFE.A33B69AF@apmsun.mpei.ac.ru...
 > 
 > > > А если потребовать 200Mb, то Перл будет жутко свопиться,
 > > > а цЭ просто вылетит. GPF. Проверено (gcc 2.9последний / 128 мозга)
 > > > И что лучше?
 > >
 > > Лучше понять, почему у тебя С вылетает. Похоже, проблема в программе, а
 > > не в языке или компиляторе. Проверяй указатели.
 > 
 > #include <stdio.h>
 > #include <malloc.h>
 > 
 > int main (int argc, char **argv) {
 >     int *a;
 >     int i;
 >     /* Try to allocate very big int array */
 >     if (NULL == (a = malloc(50000000))) {
 >         printf ("Malloc failed!\n");
 >         return 0;
 >     }
 >     for (i =  0; i < 50000000; i++)
 >         a[i] = i;
 >     printf ("OK!\n");
 >     return -1;
 > }
 > 
 > Все должно работать нормально, не так ли? В крайнем случае - выскочить
 > с соответствующим сообщением. Под EGCS 2.91 (из Cygwin B20) программа
 > выдает невнятное сообщение об ошибке, под VC 6.0 и BCC 5.5 - "Программа
 > выполнила недопустимую операцию" (соответственно 1 и 3 раза). В Линух
 > грузиться лень было, результат и так ясен.
 > 
 > WBR, AD (desyatnik@dax.ru)
 > 
 > P.S. И не надо говорить, что в реальных задачах массив надо на
 > куски бить, односвязные списки применять и т.п. - в результате
 > к тому же Перлу придем. Или Лиспу. Или Прологу. Hо - самопальному.
 > 
 
 Хорошо что ты привел пример программы. Дело в том, что malloc требует
 число байтов, то есть в твоей программе надо было писать
 
 if (NULL == (a = malloc(50000000 * sizeof(int)) ))
 
 или если не ошибаюсь для пущей надежности с учетом возможного изменения
 типа  sizeof(a[0)) - на С очень давно не писал, sorry.
 
 Как рабочую гипотезу рекомендую компилятор считать авторитетом в высшей
 инстанции - его ошибки неимоверно менее вероятны, чем программиста.
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Perl, ООП и критика   Alexey Desyatnik   18 Aug 2002 20:32:47 
 Re: Perl, ООП и критика   Konstantin Tokar   18 Aug 2002 20:59:16 
 Re: Perl, ООП и критика   Alexey Desyatnik   20 Aug 2002 16:10:15 
 Re: Perl, ООП и критика   Konstantin Tokar   18 Aug 2002 21:15:31 
Архивное /ru.perl/12770aab13dd6.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional