C++ 围绕变量';fname';腐败

C++ 围绕变量';fname';腐败,c++,fopen,C++,Fopen,该程序将读回多个bin文件 上述错误发生在“主”程序的末尾。我哪里的代码错了?谢谢你的帮助 char* read_back(const char* filename) { FILE* pFile; long lSize; char* buffer; pFile = fopen(filename, "rb"); if (pFile == NULL) { fputs("File error", stderr); exit(1); }

该程序将读回多个bin文件 上述错误发生在“主”程序的末尾。我哪里的代码错了?谢谢你的帮助

    char* read_back(const char* filename) 
    {
    FILE* pFile;
    long lSize;
    char* buffer;

    pFile = fopen(filename, "rb");
    if (pFile == NULL) { fputs("File error", stderr); exit(1); }
    fseek(pFile, 0, SEEK_END);
    lSize = ftell(pFile);
    rewind(pFile); // set file pos at the begining
    // copy the file into the buffer:
    buffer = (char*)malloc(sizeof(char)*lSize);
    size_t result = fread(buffer, 1, lSize, pFile);
    if (result != lSize) { fputs("Reading error", stderr); exit(3); }
    fclose(pFile);
    return buffer;
    }
int main() {
    const char *fname[2] ;
    fname[0] = "C:\\0_data.bin";
    fname[1] = "C:\\1_data.bin";
    fname[2] = "C:\\2_data.bin";
    int i;
    char * readback_data;

    for (i = 0; i < 3; ++i) 
    { 
        readback_data=read_back(fname[i]);      
    }
    return 0;
 }
char*读回(const char*文件名)
{
文件*pFile;
长时间lSize;
字符*缓冲区;
pFile=fopen(文件名,“rb”);
如果(pFile==NULL){fputs(“文件错误”,stderr);退出(1);}
fseek(pFile,0,SEEK_END);
lSize=ftell(pFile);
倒带(pFile);//在开始时设置文件位置
//将文件复制到缓冲区:
缓冲区=(char*)malloc(sizeof(char)*lSize);
大小\u t结果=fread(缓冲区,1,lSize,pFile);
如果(result!=lSize){fputs(“读取错误”,stderr);退出(3);}
fclose(pFile);
返回缓冲区;
}
int main(){
常量字符*fname[2];
fname[0]=“C:\\0\u data.bin”;
fname[1]=“C:\\1\u data.bin”;
fname[2]=“C:\\2\u data.bin”;
int i;
字符*读回数据;
对于(i=0;i<3;++i)
{ 
readback_data=read_back(fname[i]);
}
返回0;
}
这声明了一个包含两个值和两个指针的数组:
fname[0]
fname[1]

fname[0] = "C:\\0_data.bin";
fname[1] = "C:\\1_data.bin";
fname[2] = "C:\\2_data.bin";
这会尝试将三个指针放入一个只适合两个指针的数组中。这就是你的堆栈损坏,就在这里

这声明了一个包含两个值和两个指针的数组:
fname[0]
fname[1]

fname[0] = "C:\\0_data.bin";
fname[1] = "C:\\1_data.bin";
fname[2] = "C:\\2_data.bin";
这会尝试将三个指针放入一个只适合两个指针的数组中。这就是你的堆栈损坏,就在这里