### _tdump_allocated_delta -- Get Information about Allocated Tiled Memory (OS/2)

Format

>     #include <stdlib.h>  /* also in <malloc.h> */
>     void _tdump_allocated_delta(int nbytes);

Language Level: Extension
For the heap you specify, _tdump_allocated_delta prints information to stderr about each tiled memory block allocated by a tiled debug memory management function (_debug_tmalloc and so on) since the last call to _tdump_allocated_delta or _tdump_allocated.

_tdump_allocated_delta and _tdump_allocated print the same type of information to stderr, but _tdump_allocated displays information about all blocks that have been allocated since the start of your program.

_tdump_allocated_delta works just like _dump_allocated_delta, except that it displays information about tiled memory instead of regular memory.

Use nbytes to specify how many bytes of each memory block are to be printed. If nbytes is:

Negative value | Prints all bytes of each block.
0 | Prints no bytes.
Positive value | Prints the specified number of bytes or the entire block, whichever is smaller.

_tdump_allocated_delta prints the information to stderr by default. You can change the destination with the _set_crt_msg_handle function.

To use _tdump_allocated_delta and the tiled debug versions of the memory management functions, specify the debug memory (/Tm) and tiled memory (/Gt) compiler options.

Note: The /Tm /Gt options map all calls to regular memory management functions to their tiled debug versions. To prevent a call from being mapped, parenthesize the function name.

Return Value
There is no return value.

Example
This example allocates some memory and calls _tdump_allocated to print information about the allocated blocks. It then allocates more memory, and calls _tdump_allocated_delta to print information about the blocks allocated since the call to _tdump_allocated.

Note: You must compile this example with the /Tm /Gt options.

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>

    int main(void)
    {
       char *ptr1, *ptr2;

       if (NULL == (ptr1 = (char*)malloc(10))) {
          puts("Could not allocate memory block.");
          exit(EXIT_FAILURE);
       }
       memset(ptr1, 'a', 5);
       _tdump_allocated(10);

       if (NULL == (ptr2 = (char*)malloc(20))) {
          puts("Could not allocate memory block.");
          exit(EXIT_FAILURE);
       }
       memset(ptr2, 'b', 5);
       _tdump_allocated_delta(10);

       free(ptr1);
       free(ptr2);
       return 0;

       /****************************************************************************
          The output should be similar to :

          --------------------------------------------------------------------------
                           START OF DUMP OF ALLOCATED MEMORY BLOCKS
          --------------------------------------------------------------------------
          Address: 0x00080120      Size: 0x0000000A (10)
          This memory block was (re)allocated at line number 8 in _tdump_all_d.c.
          Memory contents:  61616161 61AAAAAA AAAA                 [aaaaaªªªªª     ]
          --------------------------------------------------------------------------
                           END OF DUMP OF ALLOCATED MEMORY BLOCKS
          --------------------------------------------------------------------------
          --------------------------------------------------------------------------
                           START OF DUMP OF ALLOCATED MEMORY BLOCKS
          --------------------------------------------------------------------------
          Address: 0x00080160      Size: 0x00000014 (20)
          This memory block was (re)allocated at line number 15 in _tdump_all_d.c.
          Memory contents:  62626262 62AAAAAA AAAA                 [bbbbbªªªªª     ]
          --------------------------------------------------------------------------
                           END OF DUMP OF ALLOCATED MEMORY BLOCKS
          --------------------------------------------------------------------------
       ****************************************************************************/
    }

Managing Memory with Multiple Heaps
Memory Management

_debug_tcalloc -- Reserve and Initialize Tiled Memory
_debug_tfree -- Release Tiled Memory
_debug_theapmin -- Release Unused Memory
_debug_tmalloc -- Reserve Tiled Memory
_debug_trealloc -- Reallocate Tiled Memory
_dump_allocated -- Get Information about Allocated Memory
_set_crt_msg_handle -- Change Runtime Message Output Destionation
_tdump_allocated -- Get Information about Allocated Tiled Memory
_udump_allocated -- Get Information about Allocated Memory in Heap
<malloc.h>
<stdlib.h>
/Tm compiler option
/Gt compiler option