Bonjour,

est-il possible d'empêcher une structure d'être copiable en C99 ? Mon problème est que j'ai une structure basique de tableau dynamique qui ressemble à ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
struct DynamicArray
{
    int size;
    int capacity;
    size_t eltsize;
    void* data;
}
 
void DynamicArray_Init(struct DynamicArray* array, size_t eltSize);
void DynamicArray_Add(struct DynamicArray* array, void* value);
et que si quelqu'un a le malheur d'écrire plus tard:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
struct DynamicArray arrayA;
DynamicArray_Init(&arrayA, sizeof(int));
 
int i = 3;
struct DynamicArray arrayB = arrayA;
DynamicArray_Add(&arrayB, &i);
Alors dans ce cas là, il se peut que la structure A soir invalidée à cause des opérations de realloc potentielles dans le Add.

J'imagine que la seule solution est de rendre la structure opaque, mais c'est un peu dommage vu que du coup ça n'est plus possible de l'allouer de manière automatique -_-

Merci d'avance.