覆盖问题:sprintf语句上重叠内存的副本(OVERLAPPING_COPY)

问题描述 投票:0回答:1
char arr[512];
...
sprintf(arr, "%s %0x", arr);

我收到有关sprintf语句的以下消息:在对函数sprintf的调用中,参数arr和arr可能指向同一对象。

这里有什么问题吗,还是我认为这是假阳性?

c++ memory-management printf coverity memory-corruption
1个回答
0
投票

重叠错误与您将arr复制到其自身从而重叠的事实有关。

此外,在代码中:

sprintf(arr, "%s %0x", arr);
                  ^^^

[%s采用arr,但%0x并未采用应有的无符号int变量,因此它试图从arr中采用它,因此您可能缺少无符号的int参数。

© www.soinside.com 2019 - 2024. All rights reserved.