我正在使用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);
}