La fonction suivante de
3 Réponses :
void * code> Les pointeurs sont automatiquement convertis à tous les autres types de pointeur (à l'exception des pointeurs de fonction), il vous suffit d'initialiser la mémoire, si l'appelant ne l'a pas fait. P>
Il est donc nécessaire d'attribuer la mémoire comme suit avant d'assigner le pointeur de vide. Compute_Convfwd * Actual_args = MALLOC (Tailleof (* Actual_args)); Code>
Non, comme l'appelant doit déjà attribuer la mémoire requise.
Pour copier la structure, vous devez le faire (soit) ou: p> et une cerise sur le dessus, d'autres Appelez ceci ... eh bien, dites moins que jolie. p> EDIT: Bien sûr, d'autres possibilités existent également, mais ce sont les plus simples. P> p>
Le pointeur args de la structure correspondante est passé et j'ai besoin de Attribuez-le à une autre structure du même genre. Est-il correct d'assigner comme donné ci-dessous ou est-il nécessaire d'initialiser la mémoire pour réelle args. p>
compute_convFWD* p_actual_args = (compute_convFWD*)malloc(sizeof(*(compute_convFWD*)args)); *p_actual_args = *((compute_convFWD*)args); // this initializing can be done with memset also
Quel est ton but? Voulez-vous copier la structure?
réal_args code> devient la même valeur i> comme le pointeur code> Void * code> transmis. Il pointe vers la même i> objet. Si vous essayez d'initialiser la mémoire, vous détruirez les données.Voulez-vous simplement un pointeur pratique à la structure de l'appelant? Avez-vous besoin de votre propre copie de la structure? La copie doit-elle persister après
convolution code> renvoie ou est-ce juste temporaire?