C library functions that make changes to arrays or objects usually take at least two arguments: a pointer to the array or object and an integer indicating the number of elements or bytes to be manipulated. If the arguments are supplied improperly during such a function call, it might cause the function may cause the pointer to not point to the object at all or to point to form a pointer that does not point into or just past the end of the object, leading to resulting in undefined behavior.
For the purposes of this rule, the effective size of a pointer is the size of the object to which it points, expressed by the number of elements which are valid to access.
...