comment utiliser sizeof( )

comment utiliser sizeof( ) - C++ - Programmation

Marsh Posté le 02-05-2011 à 12:58:10    

Bonjour,
mon programme fait un segmentation fault quand il execute l'instruction suivante :
memset(policy, 0, sizeof(srtp_policy_t));
oici le message de seg fault :

Code :
  1. Program received signal SIGSEGV, Segmentation fault.
  2. memset () at ../sysdeps/x86_64/memset.S:331
  3. 331 ../sysdeps/x86_64/memset.S: Aucun fichier ou dossier de ce type.
  4. in ../sysdeps/x86_64/memset.S


 
Voici le contexte:

Code :
  1. srtp_policy_t  *policy;
  2.   policy = si->u.rtp.info->policy;
  3.  
  4.   memset(policy, 0, sizeof(srtp_policy_t));
  5.   if(computeSessKey(si, policy, key_len) == -1)
  6.     return -1;


 
et voici srtp_policy_t :

Code :
  1. typedef struct srtp_policy_t {
  2.   ssrc_t        ssrc;        /**< The SSRC value of stream, or the  
  3.         *   flags SSRC_ANY_INBOUND or  
  4.         *   SSRC_ANY_OUTBOUND if key sharing
  5.         *   is used for this policy element.
  6.         */
  7.   crypto_policy_t rtp;         /**< SRTP crypto policy.                  */
  8.   crypto_policy_t rtcp;        /**< SRTCP crypto policy.                 */
  9.   unsigned char *key;          /**< Pointer to the SRTP master key for
  10.    *    this stream.                        */
  11.   struct srtp_policy_t *next;  /**< Pointer to next stream policy.       */
  12. } srtp_policy_t;


 
Apparemment c'est sizeof(srtp_policy_t qu'il n'aime pas ...
 
Comment je devrais indiquer à memset qu'il faut prendre la taille de srtp_policy_t ?
 
Merci d'avance pour votre aide.  

Reply

Marsh Posté le 02-05-2011 à 12:58:10   

Reply

Marsh Posté le 02-05-2011 à 13:10:41    

avant d'appeler memset, es-tu certain que policy n'est pas NULL ? ou qu'il ne pointe pas n'importe où ?

Reply

Marsh Posté le 02-05-2011 à 16:08:00    

Effectivement, la mémoire pointée par policy a été desallouée ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed