0

誰かが、以下のコードでiamが予期しない実行時エラーを受け取る理由を教えてください。2回の反復で機能しますが、それ以上は機能しません。

#include<iostream>
#include<fstream>
#include<string>

using namespace std;
void print(string hmm)
{
         ofstream ko(hmm.c_str(),ios::trunc);
         ko<<"chacho";
         ko.close();
}

int main(){
for(int i=0;i<5;i++)
{
        char *chat=new char;
        sprintf(chat,"%d%s",i,"_num.txt");
        string rat=chat;

        print(rat);
}

system("pause");
return 0;
}
4

1 に答える 1

4
char *chat=new char;

これにより、1文字のみが割り当てられます。あなたのsprintfはこのバッファを吹き飛ばしています。

また、この割り当てを削除しないと、リークが発生します。

于 2012-05-07T02:14:27.573 に答える