Partager via


C6384

Avertissement C6384 : Division d'un pointeur avec opérateur sizeof par une autre valeur

Cet avertissement indique qu'un calcul de taille peut être incorrect.Pour calculer le nombre d'éléments contenus dans un tableau, on divise parfois la taille du tableau par la taille du premier élément ; toutefois, lorsque le tableau est en réalité un pointeur, le résultat ne correspond pas généralement au résultat prévu.

Si le pointeur est un paramètre de fonction et que la taille de la mémoire tampon n'a pas été passée, il n'est pas possible de calculer la mémoire tampon maximale disponible.Lorsque le pointeur est alloué localement, la taille fournie dans l'allocation doit être utilisée.

Exemple

Le code suivant génère cet avertissement :

#include <windows.h>
#include <TCHAR.h>

#define SIZE 15

void f( )
{
  LPTSTR dest = new TCHAR[SIZE];
  char src [SIZE] = "Hello, World!!";
  if (dest)
  {
    _tcsncpy(dest, src, sizeof dest  / sizeof dest[0]); 
  }
}

Pour corriger cet avertissement, passez la taille de la mémoire tampon, comme indiqué dans le code suivant :

#include <windows.h>
#include <TCHAR.h>

#define SIZE 15

void f( )
{
  LPTSTR dest = new TCHAR[SIZE];
  char src [SIZE] = "Hello, World!!";
  if (dest)
  {
    _tcsncpy(dest, src, SIZE);
  }
}

Pour corriger cet avertissement à l'aide de la fonction de chaîne sécurisée _tcsncpy_s, utilisez le code suivant :

void f( )
{
  LPTSTR dest = new TCHAR[SIZE];
  char src [SIZE] = "Hello, World!!";
  if (dest)
  {
   _tcsncpy_s(dest, SIZE, src, SIZE);
  }
} 

Voir aussi

Référence

_mbsnbcpy_s, _mbsnbcpy_s_l

opérateur sizeof de