|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Mikhail Gusarov 2:5020/400 30 Nov 2003 08:39:13 To : Kirill Frolov Subject : Re: дефрагментация ex3 -------------------------------------------------------------------------------- Kirill Frolov <Kirill.Frolov@p2.f827.n5030.z2.fidonet.org> writes: > SM> Я ее запустил, она поработала секунд 40, после чего была прибита ядром. > > В тот момент, когда она была прибита, было выделено (или не > высвобождено) всего-лишь HЕСКОЛЬКО КИЛОБАЙТ памяти. А тебе не хватило, > наверняка, что-то около 256МБ. Разницу на 3 порядка никак не заметно? [mag@homelab:~]$ ./1 allocated 1927157770 bytes Это после следующего исправления: #include <stdio.h> #include <stdlib.h> #include <math.h> inline int rand2() { return 10*rand()/RAND_MAX; } int main() { long size; long sum = 0; while(1) { void* x = malloc(rand2()); size = rand2() + 10; void* y = malloc(size); if(x==NULL || y==NULL) break; free(x); sum += size; } printf("allocated %ld bytes\n", sum); return 0; } > В любой программе использующей "C-шный" механизм управления памятью > она фрагментируется. Уж не по книжке-ли Иртегова ДВ "Введение в операционные системы" глаголишь? А то примерчик подозрительно похож. -- Sincerely yours, Mikhail A Gusarov ICQ# 111575219 Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5.1 * Origin: IBM Solutions Group, Axmor Software (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/7723f1dd0862.html, оценка из 5, голосов 10
|