---
name: "rdsalloc"
section: "3"
platform: "linux"
package: "alliance"
version: "5.1.1-3"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/rdsalloc"
---

# rdsalloc(3)

memory allocation function

## NAME

 rdsalloc - memory allocation function

## SYNOPSYS

```
 #include "rdsnnn.h"
   char ∗rdsalloc( Size, Heap )
     unsigned int Size;
     char         Heap;
```

## PARAMETER

- *Size*

  memory size to allocate

- *Heap*

  takes the values RDS\_ALLOC\_BLOCK or RDS\_ALLOC\_HEAP (two defined constants).

## DESCRIPTION

The *rdsalloc* function can do memory allocation by block or by heap. If the user wants to allocate by block, he sets the parameter Heap to the constant RDS\_ALLOC\_BLOCK else, he wants to allocate by heap so the parameter Heap is set to RDS\_ALLOC\_HEAP. If rdsalloc is used with the constant RDS\_ALLOC\_BLOCK then rdsalloc is used as standard language C function malloc(). If the user allocates by heap then : At the first allocation of the block of *size* the parameter ´Size´, a heap of size multiple of the block Size is allocated. When another allocation of the same size is done then if the the heap isn't full then a pointer (of *size*=´Size´) is returned else a new heap is allocated and a pointer returned. Like this, the user does really one allocation (he has many pointers) to minimize fragmentation. Heap allocation is usefull if the user has to allocate many pointers of the same size (ex: rdsrec\_list structure).

- Note: Memory place allocated is set to NULL.

  ## RETURN VALUE

pointer to the allocated memory is returned.

## ERRORS

**"Rds202: rdsalloc error, can't continue !"**

it's impossible to allocate the memory size desired.

## EXAMPLE

```
      #include "rdsnnn.h"
	main()
	 {
	    rdsrec_list ∗Rectangle;
	    rdsfig_list ∗Figure;
	  Rectangle =
          (rdsrec_list ∗) rdsalloc (sizeof(rdsrec_list ∗),RDS_ALLOC_HEAP);
	  Figure    =
          (rdsfig_list ∗) rdsalloc (sizeof(rdsfig_list ∗),RDS_ALLOC_BLOCK);
	 }
```

## SEE ALSO

**librds,** **rdsfree**
