2012-05-07 8 views
0

誰かが、以下のコードで予期しない実行時エラーが発生する理由を教えてください。これは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; 
} 
+0

どのようなエラーが表示されますか? –

+0

#define BUF_LEN(256)...... char * chat =新しいchar [BUF_LEN]; ...... dlete []チャット。 – neohope

+0

@ neohopeでは、defineはこの目的にはまったく適していません。 C++でこれを行うにはもっと良い方法があります。また、新しい必要が大括弧で囲まれた配列を割り当てる。 – chris

答えて

4
char *chat=new char; 

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

この割り当てを削除してリークを引き起こすこともありません。

+0

ええ、それは仕事をありがとう。 – Zohaib

関連する問題