使用简单代码意外运行时错误

时间:2012-05-07 02:12:31

标签: c++

任何人都可以告诉我为什么我得到下面给出的代码的意外运行时错误。它可以进行两次迭代,但不会超过这个。

#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;
}

1 个答案:

答案 0 :(得分:4)

char *chat=new char;

这只分配一个字符。你的sprintf正在吹灭这个缓冲区。

您也不会删除此分配,从而导致泄密。