Pointers 为什么这段代码在windows中运行良好,但在linux中却不运行?

Pointers 为什么这段代码在windows中运行良好,但在linux中却不运行?,pointers,readfile,fgets,Pointers,Readfile,Fgets,我面临一个问题,我在windows中编写此代码,它读取文件的每一行。它在Windows7中运行良好,但在liunx中不起作用。我真的搞不懂。有人能帮我吗 list< list<string> > getTransRecordsFormFile(const char* fileName) { list< list<string> > res; FILE* f = fopen(fileName,"r"); if(f == NUL

我面临一个问题,我在windows中编写此代码,它读取文件的每一行。它在Windows7中运行良好,但在liunx中不起作用。我真的搞不懂。有人能帮我吗

list< list<string> > getTransRecordsFormFile(const char* fileName)
{
    list< list<string> > res;
    FILE* f = fopen(fileName,"r");
    if(f == NULL) {
        cout << "load input file failed!" << endl;
        exit(0);
    }
    else {
        char *buffer;
        while(fgets(buffer,MAX_LENTH,f) != NULL) {
            list<string> v = splitStr(buffer, SPLITCHAR);
            res.push_back(v);
        }
    }
    fclose(f);
    return res;
}
listgetTransRecordsFormFile(const char*fileName)
{
listres;
文件*f=fopen(文件名,“r”);
如果(f==NULL){

cout在您的代码中,
缓冲区
是单元化的。因此,它很可能(而且很可能)指向某个无效的内存位置。访问无效内存会调用。一旦您的程序点击UB,绝对没有任何保证


在使用
fgets()

中的有效内存位置之前,需要使
buffer
指向某个有效的内存位置,这显然不是C!