ich experimentiere gerade weitergehend mit TAP_MemAlloc() und musste leider feststellen, dass der verbrauchte Speicher immer blockweise belegt wird!

Egal ob ich 10 Byte oder 1000 Byte anfordere, verbraucht werden anscheinend immer 1280 Byte (+ x Byte für die Verwaltung)!
(1280 Byte = hex: 0x500 Byte)
Ab 1281 Byte wird dann das doppelte verbraucht (also 2*1280=2560+x Byte), usw. 3x, 4x ...!
Ist das allgemein bekannt, Topf spezifisch oder ein Bug

Außerdem scheint TAP_MemAlloc() mit rund 4 ms pro Aufruf nicht gerade schnell zu sein

Das durchkreuzt leider einiges, so dass ich hier wohl wieder irgendwie "drumherumprogrammieren" muss

Kann das jemand bestätigen, kann man das verhindern ?
Hier eine Testfunktion dazu, dabei wird 5000-mal TAP_MemAlloc aufgerufen:
Code: Alles auswählen
void test_memalloc()
{
int i;
void *test_p;
char strBuf[128];
dword heapSize, freeHeapSize, availHeapSize;
TAP_MemInfo(&heapSize, &freeHeapSize, &availHeapSize );
TAP_SPrint(strBuf, " HeapSize: %d free: %d available: %d GetTick: %d ", heapSize/1000, freeHeapSize/1000, availHeapSize/1000, TAP_GetTick() );
TAP_Osd_PutString1622( rgn, 60, 250, -1, strBuf, COLOR_User14, COLOR_User1);
for( i=0 ; i < 5000 ; i++ )
{
TAP_MemInfo(&heapSize, &freeHeapSize, &availHeapSize );
if( availHeapSize > 100000 )
{
test_p = TAP_MemAlloc(10); // oder ...(1000);
}
}
TAP_MemInfo(&heapSize, &freeHeapSize, &availHeapSize );
TAP_SPrint(strBuf, " HeapSize: %d free: %d available: %d GetTick: %d ", heapSize/1000, freeHeapSize/1000, availHeapSize/1000, TAP_GetTick() );
TAP_Osd_PutString1622( rgn, 60, 280, -1, strBuf, COLOR_User14, COLOR_User1);
}
sollte ohne weitere TAP's gestartet werden und benötigt ca. 20 sec bei Ausführung)
Gruß
Jag