下のとおりのソースだけで再現するので、
やっぱり問題のソースのバグではない気がしてきました。
>cl -MD -GX -O1 test.cpp
で再現しました。

#include <cstdio>
#include <string>

void func(const std::string& str)
{
 std::string tmp = str + "\r\n";
 std::printf(tmp.c_str());
}

main()
{
 func("test");
}