首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >strtok的内存泄漏

strtok的内存泄漏
EN

Stack Overflow用户
提问于 2014-12-03 12:40:10
回答 1查看 259关注 0票数 0

我在使用strtok的valgrind中发现了一些内存泄漏,我不确定为什么会发生这种情况。

可能丢失:8个块中的281个字节。

仍然可以访问:1个块中的64个字节。

我还尝试使用临时字符指针调用函数,而不是使用getenv返回的临时字符指针,但这没有帮助。

代码语言:javascript
复制
void parsePath(const char * line, vector<string> &pathing) {

    if (line == NULL)
        return;
    char * s = strdup(line);
    if (!s)
         exit(1);

    char * pch;
    pch = strtok(s, ":");
    while (pch!=NULL) {
        string tmp = string(pch);
        pathing.push_back(tmp);
        pch = strtok(NULL, ":");
    }

    free(s);
}

我在我的main中调用这个函数。

代码语言:javascript
复制
const char *pPath;
    pPath = getenv("PATH");
    if (pPath == NULL)
        perror("PATH");

    parsePath(pPath, pathing);
EN

回答 1

Stack Overflow用户

发布于 2014-12-03 18:17:10

这很可能是来自valgrind的误报。

一般来说,内存泄漏在现代C++中不是一个大问题,但您显然正在使用一种较旧的样式。如果你只使用std::string,比如Boost.Tokenizer,就不会泄露任何东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27263753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档