enhanced xma realloc()
This commit is contained in:
@ -1,11 +1,15 @@
|
||||
#include <qse/cmn/xma.h>
|
||||
#include <qse/cmn/stdio.h>
|
||||
|
||||
int main ()
|
||||
#define R(f) \
|
||||
do { \
|
||||
qse_printf (QSE_T("== %s ==\n"), QSE_T(#f)); \
|
||||
if (f() == -1) return -1; \
|
||||
} while (0)
|
||||
|
||||
static int test1 ()
|
||||
{
|
||||
int i;
|
||||
void* ptr[100];
|
||||
void* x;
|
||||
|
||||
qse_xma_t* xma = qse_xma_open (QSE_NULL, 0, 100000L);
|
||||
if (xma == QSE_NULL)
|
||||
@ -18,17 +22,88 @@ int main ()
|
||||
ptr[1] = qse_xma_alloc (xma, 1000);
|
||||
ptr[2] = qse_xma_alloc (xma, 3000);
|
||||
ptr[3] = qse_xma_alloc (xma, 1000);
|
||||
qse_xma_dump (xma);
|
||||
qse_xma_free (xma, ptr[0]);
|
||||
qse_xma_free (xma, ptr[2]);
|
||||
//qse_xma_dump (xma, qse_printf);
|
||||
//qse_xma_free (xma, ptr[0]);
|
||||
//qse_xma_free (xma, ptr[2]);
|
||||
//qse_xma_free (xma, ptr[3]);
|
||||
|
||||
qse_xma_dump (xma);
|
||||
qse_printf (QSE_T("===============================\n"));
|
||||
qse_xma_realloc (xma, ptr[1], 500);
|
||||
qse_xma_dump (xma);
|
||||
qse_xma_dump (xma, qse_printf);
|
||||
qse_xma_realloc (xma, ptr[0], 500);
|
||||
qse_xma_realloc (xma, ptr[3], 500);
|
||||
qse_xma_dump (xma, qse_printf);
|
||||
|
||||
qse_xma_close (xma);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int test2 ()
|
||||
{
|
||||
void* ptr[100];
|
||||
|
||||
qse_xma_t* xma = qse_xma_open (QSE_NULL, 0, 100000L);
|
||||
if (xma == QSE_NULL)
|
||||
{
|
||||
qse_printf (QSE_T("cannot open xma\n"));
|
||||
return -1;
|
||||
}
|
||||
|
||||
ptr[0] = qse_xma_alloc (xma, 5000);
|
||||
ptr[1] = qse_xma_alloc (xma, 1000);
|
||||
ptr[2] = qse_xma_alloc (xma, 3000);
|
||||
ptr[3] = qse_xma_alloc (xma, 1000);
|
||||
qse_xma_dump (xma, qse_printf);
|
||||
qse_xma_free (xma, ptr[0]);
|
||||
qse_xma_free (xma, ptr[2]);
|
||||
|
||||
qse_xma_dump (xma, qse_printf);
|
||||
qse_xma_realloc (xma, ptr[1], 500);
|
||||
qse_xma_dump (xma, qse_printf);
|
||||
|
||||
qse_xma_close (xma);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int test3 ()
|
||||
{
|
||||
void* ptr[100];
|
||||
|
||||
qse_xma_t* xma = qse_xma_open (QSE_NULL, 0, 100000L);
|
||||
if (xma == QSE_NULL)
|
||||
{
|
||||
qse_printf (QSE_T("cannot open xma\n"));
|
||||
return -1;
|
||||
}
|
||||
|
||||
ptr[0] = qse_xma_alloc (xma, 5000);
|
||||
ptr[1] = qse_xma_alloc (xma, 1000);
|
||||
ptr[2] = qse_xma_alloc (xma, 3000);
|
||||
ptr[3] = qse_xma_alloc (xma, 1000);
|
||||
qse_xma_dump (xma, qse_printf);
|
||||
qse_xma_free (xma, ptr[0]);
|
||||
qse_xma_free (xma, ptr[2]);
|
||||
|
||||
qse_xma_dump (xma, qse_printf);
|
||||
ptr[1] = qse_xma_realloc (xma, ptr[1], 3000);
|
||||
qse_xma_dump (xma, qse_printf);
|
||||
qse_xma_free (xma, ptr[1]);
|
||||
qse_xma_dump (xma, qse_printf);
|
||||
|
||||
qse_xma_close (xma);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int test4 ()
|
||||
{
|
||||
int i;
|
||||
void* ptr[100];
|
||||
|
||||
qse_xma_t* xma = qse_xma_open (QSE_NULL, 0, 2000000L);
|
||||
if (xma == QSE_NULL)
|
||||
{
|
||||
qse_printf (QSE_T("cannot open xma\n"));
|
||||
return -1;
|
||||
}
|
||||
|
||||
#if 0
|
||||
for (i = 0; i < 100; i++)
|
||||
{
|
||||
int sz = (i + 1) * 10;
|
||||
@ -39,7 +114,6 @@ int main ()
|
||||
qse_printf (QSE_T("failed to alloc %d\n"), sz);
|
||||
break;
|
||||
}
|
||||
qse_printf (QSE_T("%d %p\n"), sz, ptr[i]);
|
||||
}
|
||||
|
||||
for (--i; i > 0; i-= 3)
|
||||
@ -56,19 +130,27 @@ int main ()
|
||||
{
|
||||
void* x, * y;
|
||||
|
||||
qse_printf (QSE_T("%p\n"), qse_xma_alloc (xma, 5000));
|
||||
qse_printf (QSE_T("%p\n"), qse_xma_alloc (xma, 1000));
|
||||
qse_printf (QSE_T("%p\n"), (x = qse_xma_alloc (xma, 10)));
|
||||
qse_printf (QSE_T("%p\n"), (y = qse_xma_alloc (xma, 40)));
|
||||
qse_xma_alloc (xma, 5000);
|
||||
qse_xma_alloc (xma, 1000);
|
||||
x = qse_xma_alloc (xma, 10);
|
||||
y = qse_xma_alloc (xma, 40);
|
||||
|
||||
if (x) qse_xma_free (xma, x);
|
||||
if (y) qse_xma_free (xma, y);
|
||||
qse_printf (QSE_T("%p\n"), (x = qse_xma_alloc (xma, 10)));
|
||||
qse_printf (QSE_T("%p\n"), (y = qse_xma_alloc (xma, 40)));
|
||||
x = qse_xma_alloc (xma, 10);
|
||||
y = qse_xma_alloc (xma, 40);
|
||||
}
|
||||
qse_xma_dump (xma);
|
||||
#endif
|
||||
qse_xma_dump (xma, qse_printf);
|
||||
|
||||
qse_xma_close (xma);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main ()
|
||||
{
|
||||
R (test1);
|
||||
R (test2);
|
||||
R (test3);
|
||||
R (test4);
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user