次のコードがどのように機能し、アプリケーションをクラッシュさせないかを誰か説明できますか?
int main() {
char *tempStr = new char[5];
tempStr[0] = '\0';
string stemp = "helloworld";
stringstream sstream;
sstream.str(stemp);
cout << "len before = " << strlen(tempStr);
sstream >> tempStr;
cout << "len after = " << strlen(tempStr) << endl;
cout << tempStr << endl;
delete[] tempStr;
return 1;
}
私は次のように出力を得ています
len before = 0
len after = 10
helloworld
stringstream
char ポインタの余分な文字にメモリを割り当てましたか?stringstream
また、割り当てられたメモリを超えずに、データを char* 配列にコピーする正しい方法を知りたいchar*
ですか?