The analyzer detected an error that has to do with using function memcpy when dealing with overlapping source and destination memory blocks, in which case the behavior is undefined [1, 2].
Consider the following example:
void func(int *x){
memcpy(x, x+2, 10 * sizeof(int));
}
In this case, the source pointer (x+2) is offset from the destination by 8 bytes (sizeof(int) * 2). Copying 40 bytes from the source into the destination will lead to partial overlapping of the source memory block.
To fix this error, one should use a special function, memmove(...), or revise the offset between the source and destination blocks to avoid their overlapping.
Example of correct code:
void func(int *x){
memmove(x, x+2, 10 * sizeof(int));
}
References:
This diagnostic is classified as:
|
You can look at examples of errors detected by the V743 diagnostic. |
Was this page helpful?
Your message has been sent. We will email you at
If you do not see the email in your inbox, please check if it is filtered to one of the following folders:
Take
a chance!