由于持续打开和关闭 XML 文件而导致内存泄漏

问题描述 投票:0回答:1

我在线程内调用此代码片段。但是我遇到了内存泄漏。是否是由于连续打开和关闭文件造成的?如果是这样,我该如何解决这个问题?

if(g_readFromDataFile == TRUE)
{   
    xmlDocPtr file = NULL;
    xmlInitParser();
    file = xmlReadFile("DataFile.xml",NULL,XML_PARSE_NOBLANKS);
    xmlFreeDoc(file);
    xmlCleanupParser();                 
}

我尝试在该线程外部的

while(1)
循环内调用此代码,但没有遇到任何内存泄漏。

c xml multithreading xml-parsing libxml2
1个回答
0
投票

发布的代码看起来不够。不过我会尽力回答的。

如果您每次都读取同一个文件,那么只需在开始时打开一次,并在最终完成时关闭它(可能就在退出程序之前)。您需要将文件描述符传递给读取文件的函数。无需在每次需要读取文件时不断打开和关闭文件。可能您需要为此更改代码。

如果您发布更多代码,那么我可能可以知道泄漏发生在哪里(如果有的话)。

您是否也在每次需要读取文件时创建一个新线程?如果是,那么您可以检查线程是否正确完成或者它们作为僵尸线程潜伏在系统中吗?

但是你的问题并没有给出完整的情况。请解释更多并请发布更多代码。

© www.soinside.com 2019 - 2024. All rights reserved.