エラー「ヒープが壊れていることが原因として考えられます。」


mallocで確保した領域を初期化せずにstrcatしていたため、確保した領域内のゴミの後ろに文字列が連結されていた。今まではmalloc後にstrcpyしていたが、そこをコメントアウトしたことで発生していた。
回避するには、mallocした後はstrcatではなくstrcpyするか、mallocした領域を初期化して用いる。


char* buf = (char*)malloc(128);

char tmp[32];
//sprintf(tmp, "%3d", data1 );
//strcpy(buf, tmp);

sprintf(tmp, "%3d", data2 );
strcat(buf, tmp);

・・・・

// ここで「ヒープが壊れていることが原因として考えられます。」エラーとなる
std::string str = "test";