Esempio n. 1
0
static void free_Node(Node x) {
    if (x->left)
        free_Node(x->left);
    if (x->right)
        free_Node(x->right);
    free(x);
}
Esempio n. 2
0
void free_Node( INode* self )
{
	if ( self->sibling )
	{
		free_Node( self->sibling );
	}
	if ( self->child )
	{
		free_Node( self->child );
	}
	if ( self->rightChild )
	{
		free_Node( self->rightChild );
	}
	if ( self->key )
	{
		free_CharString( self->key );
	}
	CRuntime_free( self );
}
Esempio n. 3
0
static void TimeConstruction(int depth) {
        long    tStart, tFinish;
        int     iNumIters = NumIters(depth);
        Node    tempTree;
        int     i;

        printf ("Creating %d trees of depth %d\n", iNumIters, depth);
                
        for (i = 0; i < iNumIters; ++i) {
                tempTree = leaf_Node();
                Populate(depth, tempTree);
                free_Node(tempTree);
                tempTree = 0;
        }
        for (i = 0; i < iNumIters; ++i) {
                tempTree = MakeTree(depth);
                free_Node(tempTree);
                tempTree = 0;
        }
}
Esempio n. 4
0
main() {
        Node    root;
        Node    longLivedTree;
        Node    tempTree;
        double *array;
        int     i;
        int     d;

        printf ("Garbage Collector Test\n");
        printf (" Live storage will peak at %d bytes.\n\n",
                2 * sizeof(struct Node0) * TreeSize(kLongLivedTreeDepth) +
                sizeof(double) * kArraySize);
        printf (" Stretching memory with a binary tree of depth %d\n",
                kStretchTreeDepth);
        PrintDiagnostics();
        
        /* Stretch the memory space quickly */
        tempTree = MakeTree(kStretchTreeDepth);
        free_Node(tempTree);
        tempTree = 0;

        /* Create a long lived object */
        printf (" Creating a long-lived binary tree of depth %d\n",
                kLongLivedTreeDepth);
        longLivedTree = leaf_Node();
        Populate(kLongLivedTreeDepth, longLivedTree);

        /* Create long-lived array, filling half of it */
        printf (" Creating a long-lived array of %d doubles\n",
                kArraySize);
        array = (double *) malloc(kArraySize*sizeof(double));
        for (i = 0; i < kArraySize/2; ++i) {
                array[i] = 1.0/i; /* sic */
        }
        PrintDiagnostics();

        for (d = kMinTreeDepth; d <= kMaxTreeDepth; d += 2) {
                TimeConstruction(d);
        }

        if (longLivedTree == 0 || array[1000] != 1.0/1000)
                printf ("Failed\n");
                /* Fake reference to LongLivedTree */
                /* and array */
                /* to keep them from being optimized away */

        PrintDiagnostics();
}