Une structure comme celle-ci fonctionne très bien, je peux utiliser t après avoir appelé malloc (sizeof (mystruct)):Comment malloc "MyDef ** t" à une longueur spécifique, au lieu de "MyDef * t [5]" en C
struct mystruct {
MyDef *t[5];
};
Je veux être en mesure de définir dynamiquement la longueur du réseau de MyDef, comme ce qui suit:
struct mystruct {
MyDef **t;
int size;
};
Que dois-je faire en plus t o malloc (sizeof (mystruct)) pour que cela fonctionne, donc je peux faire TestStruct-> t [3] = quelque chose? Juste obtenir une erreur de segmentation!
Merci!
EDIT avec le code qui provoque la faute de SEG, à moins que je suis aveugle cela semble être ce que les réponses sont à ce jour:
#include <stdio.h>
typedef struct mydef {
int t;
int y;
int k;
} MyDef;
typedef struct mystruct {
MyDef **t;
int size;
} MyStruct;
int main(){
MyStruct *m;
if (m = (MyStruct *)malloc(sizeof(MyStruct)) == NULL)
return 0;
m->size = 11; //seg fault
if (m->t = malloc(m->size * sizeof(*m->t)) == NULL)
return 0;
return 0;
}
Merci. Oui, c'est ce que j'ai eu, va éditer la question avec la ligne que j'ai - c'est-à-dire - provoquant une erreur de segmentation. –
@John - D'accord, assurez-vous de montrer le code réel, pas un code similaire hypothétique. –
Édité avec le code réel –