我遇到内存泄漏问题
我有循环,用LibXL
库读取EXCEL上的数据。
Book* book3 = xlCreateXMLBook();
if (book3->load("Výmera Územia, využitie pôdy.xlsx")) {
CellType cellType;
Sheet* sheet = book3->getSheet(0);
while (startIndex <= 100 * countOfLoad) {
int k = 1;
int numberOfBlank = 0;
const char* name = sheet->readStr(startIndex, 0);
nameOfVillage = name;
free ((void*) name);
...
}
...
}
const char* name = sheet->readStr(startIndex, 0);
- 从单元格中读取字符串及其格式。
内存内部分配并且有效,直到加载新工作簿或调用Book::release()
进行二进制实现(xls)。
但是每次在xml实现(xlsx)中都需要复制结果字符串。
但是当我写free ((void*) name)
时
给我错误:
Test(24919,0x1025bb380) malloc: *** error for object 0x10dacb738: pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug
当我的循环在 158 时间读取字符串后,此程序停止读取导致内存已满,我必须在读取字符串后删除内存。
任何人都可以提供帮助? THX
答案 0 :(得分:0)
来自readStr
(http://libxl.com/spreadsheet.html#readStr)
内存分配内存有效,直到加载新工作簿或调用Book :: release()进行二进制实现(xls)。但是每次在xml实现中都需要复制结果字符串(xlsx)。
这意味着当您完成工作簿以释放内存时,需要调用Book::release()
。
因此,请勿通过此库中的指针调用free
。
- 或者向LibXL的作者提交一个错误。
- 或 - 从freestore为变量使用更多内存。
答案 1 :(得分:-1)
我遇到了同样的问题。 这可能不是内存泄漏的问题.. 购买许可证即可解决问题。