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);
}
}