c++ - 变量 'fname' 周围的堆栈已损坏

标签 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); }
    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;
 }

最佳答案

const char *fname[2] ;

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

fname[0] = "C:\\0_data.bin";
fname[1] = "C:\\1_data.bin";
fname[2] = "C:\\2_data.bin";

这试图将三个指针放入一个大小仅为两个的数组中。那是你的堆栈损坏,就在这里。

关于c++ - 变量 'fname' 周围的堆栈已损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54300142/

相关文章:

c++ - 从各种列表中收集条目的迭代器列表

Python:打开(文件名, 'w')用于不存在的文件

c - 如何使用fopen打开当前目录中文件夹内的文件

php - fopen() - 权限被拒绝 - 尽管拥有正确的权限(据我所知)

c - 是否可以防止添加 BOM 以输出 UTF-8 文件? ( Visual Studio 2005)

c++ - 简单的 C++ 程序在使用节点指针时崩溃

c++ - 使用包装器类作为指向它包装的类型的指针?

c++ - 如何使用模板实现minheap

c++ - 文件存在时,Linux (Lubuntu) 中的 fopen 返回 NULL

c++ - 在程序源文件中使用脚本变量 OMP_NUM_THREADS