( turul16 | 2007. 11. 13., k – 18:49 )


#include <malloc.h>
int main()
{
int a;
void *p[65536];
p[0]=malloc(4096);
getchar();
for (a=1;a<65536;a++)
{
	p[a]=malloc(4096);
	p[a-1]=realloc(p[a-1],1);
}// 4096+a   a lefoglalt memoria, topot sasolni, a*4096 megy el valójában.
getchar();
for (a=0;a<65536;a++)
{
 free(p[a]);
}
getchar();
return 0;
}

Igy kell fregmentalni. (0.1% alatt van a hasznos memoria)

Elsore jo taktikanak tunhet amit reallocal művel az ember, tul foglalja memet aztan szugsegesre kicsinyiti ,valojaban nem mindig olyan jo dolog az.

Az is jó ötletnek tűnik, hogy a realloc ne mozgasa át a memoriat (copy megsporolása), ha nem szükséges (kisebb területre váltáskor nem teszi).

Aki ezeket nem tudja..
szerk:
az biztos c++-ban máskép kodól, mint c -ben :)