libxls:当超过许多加载的文件时,xls_open()会崩溃

时间:2015-09-04 10:15:45

标签: c excel xls

我正在使用libxls库来读取C语言中的.xls文件。我想加载大约40个excel文件 但是,当我超过12个文件时,Function xls_open()会崩溃并显示以下窗口消息:"segmentation default"。当我只加载12个文件时,它工作正常。

任何人都可以告诉我内存中的最大文件数    图书馆支持?

我通过调用xls_close()关闭我打开的每个文件。这个函数似乎是免费的所有内存,这里是代码:

#define xls_close xls_close_WB

void xls_close_WB(xlsWorkBook* pWB)
{
OLE2*       ole;

verbose ("xls_close");

if(!pWB) return;

// OLE first
ole=pWB->olestr->ole;

ole2_fclose(pWB->olestr);

ole2_close(ole);

// WorkBook
free(pWB->charset);

// Sheets
{
    DWORD i;
    for(i=0; i<pWB->sheets.count; ++i) {
        free(pWB->sheets.sheet[i].name);
    }
    free(pWB->sheets.sheet);
}

// SST
{
    DWORD i;
    for(i=0; i<pWB->sst.count; ++i) {
        free(pWB->sst.string[i].str);
    }
    free(pWB->sst.string);
}

// xfs
{
    free(pWB->xfs.xf);
}

// fonts
{
    DWORD i;
    for(i=0; i<pWB->fonts.count; ++i) {
        free(pWB->fonts.font[i].name);
    }
    free(pWB->fonts.font);
}

// formats
{
    DWORD i;
    for(i=0; i<pWB->formats.count; ++i) {
        free(pWB->formats.format[i].value);
    }
    free(pWB->formats.format);
}

// buffers
if(pWB->summary)  free(pWB->summary);
if(pWB->docSummary) free(pWB->docSummary);

// TODO - free other dynamically allocated objects like string table??
free(pWB);
 }

0 个答案:

没有答案