シリアルポートからデータを読み取るこのプログラムがあります。行ごとに、現在の時刻とデータ行を連結しようとしています。何らかの理由で、2 番目の印刷のあたりでクラッシュします (括弧の終わりのように見えますか?)。奇妙な点は、印刷物にコメントを付けてもクラッシュすることです。
char * cdata;
{
if( BINARY_ASCII == 1 ) //right now this is just set to 0, please ignore
{
cdata = convertBSTRToByteArray(data , numChars);
}
else
{
cdata = convertBSTRToString(data);
//prints the original output
cout << "before timestamp concat is: " << cdata << "\n";
//this is supposed to concatenate each output line with the associated time
std::stringstream ss;
ss << currentDateTime() << "," << cdata;
std::string s = ss.str();
std::strcpy(cdata,s.c_str());
cout << "after timestamp concat is: " << cdata << "\n"; //around here it crashes
}
cout << "after the thing" << "\n"; //does not even get here
char * データが問題になると思っていましたが、次のように初期化してみました
char *cdata = 0;
と
char *cdata = new char [100];
変化なしに...
連結で何か間違ったことをしたと思いますか?