Array aus einer Funktion zurückgeben

In >C< geht das bspw. so, ABER der Aufrufer ist dann dafür verantwortlich, dass wieder aufgeräumt wird (insofern kein Array übergeben wurd):

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

char *getchararray(int n)
{
    char *a = malloc(n);
    if (!a)
    {
        return NULL;
    }
    return a;
}

int32_t *getintarray(int n)
{
    int32_t *a = malloc(sizeof(int32_t) * n);
    if (!a)
    {
        return NULL;
    }
    return a;
}

int main()
{
    char *a = getchararray(15);
    int32_t *b = getintarray(15);
    char c = 1;
    size_t i = 0;
    if (!a)
    {
        free(a);
        c = 0;
    }
    if (!b)
    {
        free(b);
        c = 0;
    }
    if (c)
    {
        a[2] = 2;
        b[2] = 22222;
        for (i = 0; i < 15; i++)
        {
            printf("%d   %d\n", a[i], b[i]);
        }
    }
    return 0;
}

Und in >C++< ist das ganze sehr viel „komfortabler“…

Siehe auch https://stackoverflow.com/questions/11656532/returning-an-array-using-c