1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <stddef.h> /*pour offsetof()*/
#include <stdlib.h>
struct TableauDeInt
{
size_t taille;
int data[1];
};
struct TableauDeInt *AllocTableauDeInt(size_t taille)
{
struct TableauDeInt *ret = NULL;
size_t cbAvantData = offsetof(struct TableauDeInt, data);
size_t cbData = taille * sizeof (ret->data[0]); /*Note: ret n'est pas vraiment déréférencé, grace au sizeof*/
size_t cbTotal = cbAvantData + cbData;
ret = malloc(cbTotal);
if(ret != NULL)
{
ret->taille = taille;
}
return ret;
} |
Partager