Need little help..

#include <iostream>
int main() {
int bit = 1;
int init = 0xf ^ (1 << bit);
char* c = new char(2);
sprintf(c, "%x", init);
std::string initVal = std::string("4'h") + c;
std::cout << initVal << std::endl;
}

Above code is compiling as I expect it to be.
Problem is when I run ******** on it, it prompts me the following message:

Out-of-bounds access (ARRAY_VS_SINGLETON). Passing "c" to function "operator +(HSTString const &, char const *)" which uses it as an array. This might corrupt or misinterpret adjacent memory locations


I am out of ideas for now. Can champs here figure out what I am doing wrong?