【发布时间】:2020-01-24 08:41:59
【问题描述】:
char arr[512];
...
sprintf(arr, "%s %30s", arr, "Some Text");
我收到以下关于 sprintf 语句的消息: 在调用函数 sprintf 时,参数 arr 和 arr 可能指向同一个对象。
还有其他方法可以实现这种格式吗?
【问题讨论】:
-
你检查this
-
是的,但不太清楚。我认为这可能是未定义的行为。那么我该如何解决呢?
-
你想用这段代码实现什么?没有上下文,它看起来有问题。
-
cppreference:“如果调用 sprintf 或 snprintf 导致在重叠的对象之间发生复制,则行为未定义”。你也错过了一个论点。
-
您收到的警告提醒您放弃
sprintf并使用C++ iostreams 或fmt 或Boost.Format 之类的库。
标签: c++ memory-management printf coverity memory-corruption