V514. Dividing sizeof a pointer by another value. There is a probability of logical error presence.
The analyzer found a potential error related to division of the pointer's size by some value. Division of the pointer's size is rather a strange operation since it has no practical sense and most likely indicates an error or misprint in code.
Consider an example:
const size_t StrLen = 16; LPTSTR dest = new TCHAR[StrLen]; TCHAR src[StrLen] = _T("string for V514"); _tcsncpy(dest, src, sizeof(dest)/sizeof(dest));
In the "sizeof(dest)/sizeof(dest)" expression, the pointer's size is divided by the size of the element the pointer refers to. As a result, we might get different numbers of copied bytes depending on sizes of the pointer and TCHAR type - but never the number the programmer expected.
Taking into account that the _tcsncpy function is unsafe in itself, correct and safer code may look in the following way:
const size_t StrLen = 16; LPTSTR dest = new TCHAR[StrLen]; TCHAR src[StrLen] = _T("string for V514"); _tcsncpy_s(dest, StrLen, src, StrLen);
This diagnostic is classified as:
You can look at examples of errors detected by the V514 diagnostic.